Да, но я использовал собственную реализацию загрузчика изображений, очень похожую на DroidFu (с кэшированием в памяти / файлах, загрузкой многопоточных и непоточных изображений). И кажется, что вы не можете загружать изображение по потокам с помощью настройки Gallery + Cursor Adapter, иначе вы получаете очень прерывистую прокрутку вместо одной непрерывной плавной прокрутки.
Вот пример кода, я использую тот же адаптер курсора для просмотра списка, галереи и сетки.
public class CatalogCursorAdapter extends CursorAdapter {
private Context context = null;
private HLBitmapManager iMan;
private CatalogViewHolder holder;
private final LayoutInflater inflater;
private int layout;
public CatalogCursorAdapter(Context context, Cursor c, int layout)
{
super(context, c, true);
inflater = LayoutInflater.from(context);
this.layout = layout;
this.context = context;
iMan = new HLBitmapManager(context.getCacheDir());
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view = inflater.inflate(layout, parent, false);
return view;
}
@Override
public void bindView(View v, Context context, Cursor c) {
String brandName = c.getString(c.getColumnIndex("display_name"));
String category = c.getString(c.getColumnIndex("display_price"));
String imgUrl = c.getString(c.getColumnIndex("img_url"));
holder = (CatalogViewHolder) v.getTag();
if(holder == null) {
holder = new CatalogViewHolder(v);
v.setTag(holder);
}
Bitmap image;
switch (this.layout) {
case R.layout.catalog_list_row:
holder.title.setText(brandName);
holder.sub_title.setText(category);
iMan.fetchBitmapOnThread(imgUrl, Constants.EVENT_LISTVIEW_IMG_WIDTH, Constants.EVENT_LISTVIEW_IMG_HEIGHT, holder.icon);
break;
case R.layout.catalog_grid_cell:
iMan.fetchBitmapOnThread(imgUrl, Constants.EVENT_LISTVIEW_IMG_WIDTH, Constants.EVENT_LISTVIEW_IMG_HEIGHT, holder.icon);
break;
case R.layout.catalog_slide_cell:
image = iMan.fetchBitmap(imgUrl, Constants.EVENT_LISTVIEW_IMG_WIDTH, Constants.EVENT_LISTVIEW_IMG_HEIGHT);
holder.icon.setImageBitmap(image);
break;
}
holder.icon.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
}
}