class ImageCursorAdapter extends CursorAdapter {
     int idx = 0;
  public ImageCursorAdapter(Context context, Cursor c) {
   super(context, c);
  }
  @Override
  public void bindView(View view, Context context, Cursor cursor)  {
    ImageLoader imageLoader = new ImageLoader(view);
    imageLoader.setPosition(cursor.getPosition());
    imageLoader.execute(cursor);
  }
  @Override
  public View newView(Context context, Cursor cursor, ViewGroup parent) {
   ImageView v = new ImageView(context);
   v.setLayoutParams(new GridView.LayoutParams(200, 200));
   v.setScaleType(ImageView.ScaleType.FIT_CENTER);
   v.setId(cursor.getPosition());
   
   return v;
  }
  
  class ImageLoader extends AsyncTask<Cursor, Void, Bitmap> {
   
   private WeakReference<ImageView> mImageView;
   private int mPosition;
   
   public ImageLoader(View view) {
    mImageView = new WeakReference<ImageView>((ImageView)view);
   }
   @Override
   protected Bitmap doInBackground(Cursor... cursor) {
    long id = cursor[0].getLong(mCursor.getColumnIndexOrThrow(Images.Media._ID)); 
    Bitmap bitmap = Images.Thumbnails.getThumbnail(getContentResolver(), id, Images.Thumbnails.MICRO_KIND, null);
       
    return bitmap;
   }
   
   @Override
   protected void onPostExecute(Bitmap result) {
    
    if(mImageView.get().getId() == mPosition){
     try {
      mImageView.get().setImageBitmap(result);
     } catch(Exception e) {}
    }
    
   }
   
   public void setPosition(int position) {
    mPosition = position;
   }
   
  }     
    }

 


그리드 뷰에 커스텀 CursorAdapter를 사용해서 기본 갤러리에 있는 이미지를 가져와야하는데. 그냥 쓰면 스크롤이 너무 느려서 

AsyncTask를 사용했습니다. (소스 참고부탁드립니다.)

 

그런데 위와 같이 작성 할 시 같은이미지가 중복되서 보여지는 문제가 발생합니다.

그래서 AsyncTask를 사용하지 않고 바로 bindview에 이미지를 가져오고 셋팅하는 코드를 넣었더니 제대로 이미지가 나옵니다.;;

 

어느부분이 문제가 되서 저렇게 될까요..?