title: android.widget.ImageView cannot be cast to android.widget.CheckBox
body: <p>my code is crashing and giving the error image view cannot be cast to checkbok. the source code is as shown below. pl help me figure out the pblm</p>
  
  <pre><code>package com.example.application1;
  
  
  import android.content.Context;
  import android.content.Intent;
  import android.content.res.Resources;
  import android.database.Cursor;
  import android.graphics.Bitmap;
  import android.os.Bundle;
  import android.provider.MediaStore;
  import android.provider.MediaStore.Images.Media;
  import android.util.SparseBooleanArray;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.Window;
  import android.view.View.OnClickListener;
  import android.view.ViewGroup;
  import android.view.animation.Animation;
  import android.view.animation.AnimationUtils;
  import android.widget.AdapterView;
  import android.widget.AdapterView.OnItemClickListener;
  import android.widget.BaseAdapter;
  import android.widget.Button;
  import android.widget.CheckBox;
  import android.widget.CompoundButton;
  import android.widget.CompoundButton.OnCheckedChangeListener;
  import android.widget.GridView;
  import android.widget.ImageView;
  import android.widget.TextView;
  import com.nostra13.universalimageloader.core.DisplayImageOptions;
  import com.nostra13.universalimageloader.core.DisplayImageOptions.Builder;
  import com.nostra13.universalimageloader.core.ImageLoader;
  import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
  import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
  import java.io.PrintStream;
  import java.util.ArrayList;
  //import com.example.application1.R.layout;
  import java.util.HashSet;
  import android.*;
  import com.example.application1.BaseActivity;
  import com.example.application1.R.menu;
  
  public class MultiPhotoSelectActivity
    extends BaseActivity
  {
    private AlbumAdapter albumAdapter;
    Button done;
    private GridView gridView;
    private ImageAdapter imageAdapter;
    private ArrayList&lt;String&gt; imageUrls;
  
    private boolean isAlbumView;
    private ArrayList&lt;Album&gt; mAlbumsList;
    private DisplayImageOptions options;
  
  
    private void fillAlbums()
    {
      this.isAlbumView = true;
      this.mAlbumsList = new ArrayList();
      String[] arrayOfString = { "_data", "_id", "bucket_display_name", "bucket_id" };
      Cursor localCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, arrayOfString, null, null, null);
      HashSet localHashSet = new HashSet();
      for (int i = 0;; i++)
      {
        if (i &gt;= localCursor.getCount()) {
          return;
        }
        Album localAlbum = new Album();
        localCursor.moveToPosition(i);
        int j = localCursor.getColumnIndex("_data");
        int k = localCursor.getColumnIndex("bucket_display_name");
        int m = localCursor.getColumnIndex("bucket_id");
        localCursor.getColumnIndex("_id");
        String str = localCursor.getString(k);
        localAlbum.setAlbumName(str);
        localAlbum.setImageUrl(localCursor.getString(j));
        localAlbum.albumId = localCursor.getString(m);
        if (localHashSet.add(str)) {
          this.mAlbumsList.add(localAlbum);
        }
        System.out.println("=====&gt; BUCKET_DISPLAY_NAME =&gt; " + localCursor.getString(localCursor.getColumnIndex("bucket_display_name")));
      }
    }
  
    private void fillGallery(String paramString)
    {
      String[] arrayOfString = { "_data", "_id" };
      Cursor localCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, arrayOfString, "bucket_id=?", new String[] { paramString }, "datetaken DESC");
      this.imageUrls = new ArrayList();
      for (int i = 0;; i++)
      {
        if (i &gt;= localCursor.getCount())
        {
          this.imageAdapter = new ImageAdapter(this.imageUrls);
          this.gridView.setAdapter(this.imageAdapter);
          return;
        }
        localCursor.moveToPosition(i);
        int j = localCursor.getColumnIndex("_data");
        this.imageUrls.add(localCursor.getString(j));
      }
    }
  
    public void onBackPressed()
    {
      ;
      if (this.isAlbumView)
      {
        super.onBackPressed();
        return;
      }
      this.isAlbumView = true;
      this.gridView.setAdapter(this.albumAdapter);
    }
  
    public void onCreate(Bundle savedInstanceState)
    {
      super.onCreate(savedInstanceState);
      requestWindowFeature(Window.FEATURE_NO_TITLE);
      imageLoader.init(ImageLoaderConfiguration.createDefault(getBaseContext()));
  
      //BaseActivity.imageLoader.init(ImageLoaderConfiguration.createDefault(getBaseCont‌​ext()));
     setContentView( com.example.application1.R.layout.activity_multiphoto_);
     fillAlbums();
      this.options = new DisplayImageOptions.Builder().showStubImage(R.drawable.ic_gallery).showImageForEmptyUri(R.drawable.ic_gallery).cacheInMemory().cacheOnDisc().build();
      this.albumAdapter = new AlbumAdapter(this.mAlbumsList);
      this.gridView = ((GridView)findViewById(R.id.gridview));
      this.done = ((Button)findViewById(R.id.done));
      this.gridView.setAdapter(this.albumAdapter);
      this.gridView.setOnItemClickListener(new AdapterView.OnItemClickListener()
      {
        public void onItemClick(AdapterView&lt;?&gt; paramAnonymousAdapterView, View paramAnonymousView, int paramAnonymousInt, long paramAnonymousLong)
        {
          if (MultiPhotoSelectActivity.this.isAlbumView)
          {
            MultiPhotoSelectActivity.this.isAlbumView = false;
            MultiPhotoSelectActivity.this.fillGallery(((MultiPhotoSelectActivity.Album)MultiPhotoSelectActivity.this.mAlbumsList.get(paramAnonymousInt)).albumId);
          }
        }
      });
      this.done.setOnClickListener(new View.OnClickListener()
      {
        public void onClick(View paramAnonymousView)
        {
          ArrayList localArrayList = MultiPhotoSelectActivity.this.imageAdapter.getCheckedItems();
          Intent localIntent = new Intent(MultiPhotoSelectActivity.this, CreateSlideActivity.class);
          localIntent.putExtra("list", localArrayList);
          System.out.println(" " + localArrayList);
          MultiPhotoSelectActivity.this.setResult(-1, localIntent);
          MultiPhotoSelectActivity.this.finish();
        }
      });
    }
  
    protected void onDestroy()
    {
      super.onDestroy();
    }
  
  
  
    protected void onStop()
    {
      super.onStop();
    }
  
    public class Album
    {
      public String albumId;
      private String albumName;
      private String imageUrl;
  
      public Album() {}
  
      public String getAlbumName()
      {
        return this.albumName;
      }
  
      public String getImageUrl()
      {
        return this.imageUrl;
      }
  
      public void setAlbumName(String paramString)
      {
        this.albumName = paramString;
      }
  
      public void setImageUrl(String paramString)
      {
        this.imageUrl = paramString;
      }
    }
  
    public class AlbumAdapter
      extends BaseAdapter
    {
      Context mContext;
      ArrayList&lt;MultiPhotoSelectActivity.Album&gt; mList;
  
      public AlbumAdapter(ArrayList&lt;Album&gt; mAlbumsList)
      {
  
        this.mList = mAlbumsList;
      }
  
      public int getCount()
      {
        return this.mList.size();
      }
  
      public MultiPhotoSelectActivity.Album getItem(int paramInt)
      {
        return (MultiPhotoSelectActivity.Album)this.mList.get(paramInt);
      }
  
      public long getItemId(int paramInt)
      {
        return paramInt;
      }
  
      public View getView(int paramInt, View paramView, ViewGroup paramViewGroup)
      {
  
        if (paramView == null) {
          paramView = ((LayoutInflater)MultiPhotoSelectActivity.this.getSystemService("layout_inflater")).inflate(R.layout.row_album_item, null);
        }
        final ImageView localImageView = (ImageView)paramView.findViewById(R.id.albumview);
        TextView localTextView = (TextView)paramView.findViewById(R.id.albumName);
        MultiPhotoSelectActivity.this.imageLoader.displayImage("file://" + ((MultiPhotoSelectActivity.Album)this.mList.get(paramInt)).imageUrl, localImageView, MultiPhotoSelectActivity.this.options, new SimpleImageLoadingListener()
        {
          public void onLoadingComplete(Bitmap paramAnonymousBitmap)
          {
            Animation localAnimation = AnimationUtils.loadAnimation(MultiPhotoSelectActivity.this, R.anim.fade_in);
            localImageView.setAnimation(localAnimation);
            localAnimation.start();
          }
        });
        localTextView.setText(((MultiPhotoSelectActivity.Album)this.mList.get(paramInt)).albumName);
        return paramView;
      }
    }
  
    class ImageAdapter
      extends BaseAdapter
    {
      CompoundButton.OnCheckedChangeListener mCheckedChangeListener = new CompoundButton.OnCheckedChangeListener()
      {
        public void onCheckedChanged(CompoundButton paramAnonymousCompoundButton, boolean paramAnonymousBoolean)
        {
          MultiPhotoSelectActivity.ImageAdapter.this.mSparseBooleanArray.put(((Integer)paramAnonymousCompoundButton.getTag()).intValue(), paramAnonymousBoolean);
        }
      };
      Context mContext;
      ArrayList&lt;String&gt; mList;
      SparseBooleanArray mSparseBooleanArray = new SparseBooleanArray();
  
      public ImageAdapter(ArrayList&lt;String&gt; imageUrls)
      {
  
        this.mList = imageUrls;
      }
  
      public ArrayList&lt;String&gt; getCheckedItems()
      {
  
          ArrayList&lt;String&gt; arraylist = new ArrayList&lt;String&gt;();
          int i = 0;
          do
          {
              if (i &gt;= mList.size())
              {
                  return arraylist;
              }
              if (mSparseBooleanArray.get(i))
              {
                  arraylist.add((String)mList.get(i));
  
              }
              i++;
          } while (true);
  
  
      }
  
      public int getCount()
      {
        return MultiPhotoSelectActivity.this.imageUrls.size();
      }
  
      public Object getItem(int paramInt)
      {
        return null;
      }
  
      public long getItemId(int paramInt)
      {
        return paramInt;
      }
  
      public View getView(int paramInt, View paramView, ViewGroup paramViewGroup)
      {
          //imageLoader.init(ImageLoaderConfiguration.createDefault(getBaseContext()));
        if (paramView == null) {
          paramView = ((LayoutInflater)MultiPhotoSelectActivity.this.getSystemService("layout_inflater")).inflate(R.layout.row_multiphoto_item, null);
  
        }
        MultiPhotoSelectActivity.this.done.setVisibility(0);
        CheckBox localCheckBox = (CheckBox)paramView.findViewById(R.id.imageView2);
        final ImageView localImageView = (ImageView)paramView.findViewById(R.anim.fade_in);
        MultiPhotoSelectActivity.this.imageLoader.displayImage("file://" + (String)MultiPhotoSelectActivity.this.imageUrls.get(paramInt), localImageView, MultiPhotoSelectActivity.this.options, new SimpleImageLoadingListener()
        {
          public void onLoadingComplete(Bitmap paramAnonymousBitmap)
          {
            Animation localAnimation = AnimationUtils.loadAnimation(MultiPhotoSelectActivity.this, R.anim.fade_in);
            localImageView.setAnimation(localAnimation);
            localAnimation.start();
          }
        });
        localCheckBox.setTag(Integer.valueOf(paramInt));
        localCheckBox.setChecked(this.mSparseBooleanArray.get(paramInt));
        localCheckBox.setOnCheckedChangeListener(this.mCheckedChangeListener);
        return paramView;
      }
    }
  }
  </code></pre>
  
  <p>this is my xml file row_multi_photo.</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RelativeLayout 
      android:padding="0.0dip" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"&gt;
      &lt;RelativeLayout 
          android:background="@drawable/bg_photo" 
          android:padding="3.0dip" 
          android:layout_width="108.0dip" 
          android:layout_height="108.0dip"&gt;
          &lt;ImageView 
              android:id="@+id/imageView2" 
              android:layout_width="105.0dip" 
              android:layout_height="105.0dip" 
              android:src="@drawable/ic_launcher" 
              android:scaleType="centerCrop" 
              android:layout_centerInParent="true" /&gt;
      &lt;/RelativeLayout&gt;
      &lt;CheckBox 
          android:id="@+id/checkBox1" 
          android:padding="3.0dip" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:button="@drawable/checkbox" 
          android:layout_alignParentRight="true" 
          android:layout_alignParentBottom="true" /&gt;
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>the log cat is as shown below</p>
  
  <pre><code>   09-10 18:57:51.569: E/AndroidRuntime(25984): FATAL EXCEPTION: main
  09-10 18:57:51.569: E/AndroidRuntime(25984): java.lang.IllegalArgumentException: view must not be null
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at com.nostra13.universalimageloader.core.imageaware.ViewAware.&lt;init&gt;(ViewAware.java:70)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at com.nostra13.universalimageloader.core.imageaware.ViewAware.&lt;init&gt;(ViewAware.java:50)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at com.nostra13.universalimageloader.core.imageaware.ImageViewAware.&lt;init&gt;(ImageViewAware.java:44)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:365)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:340)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at com.example.application1.MultiPhotoSelectActivity$ImageAdapter.getView(MultiPhotoSelectActivity.java:313)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.widget.AbsListView.obtainView(AbsListView.java:2465)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.widget.GridView.makeAndAddView(GridView.java:1331)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.widget.GridView.makeRow(GridView.java:331)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.widget.GridView.fillDown(GridView.java:283)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.widget.GridView.fillFromTop(GridView.java:407)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.widget.GridView.layoutChildren(GridView.java:1241)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.widget.AbsListView.onTouchEvent(AbsListView.java:3898)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.View.dispatchTouchEvent(View.java:7234)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2231)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2237)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1979)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2237)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1979)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2237)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1979)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2237)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1979)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2177)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1482)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.app.Activity.dispatchTouchEvent(Activity.java:2470)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2125)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.View.dispatchPointerEvent(View.java:7414)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3555)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3487)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4604)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4582)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4686)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:177)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:166)
  09-10 18:57:51.569: E/AndroidRuntime(25984):    at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4654)
  </code></pre>