gpt4 book ai didi

android - Android 上的 Cursor Adapter 和 GalleryView

转载 作者:行者123 更新时间:2023-11-29 22:30:10 26 4
gpt4 key购买 nike

所有-有没有人将 CursorAdapter 与 Gallery 小部件一起使用?有很多示例显示 Gallery 和 BaseAdapter(Array) 作为其数据存储。

我的用例是从 SQLite 游标驱动图库。光标具有要显示的 ImageURL。

我一直在其他 ListView 中使用 DroidFu 的 ImageLoader(带有 ImageView)来异步下载图像。

但这似乎不适用于 Gallery。它(画廊)不喜欢处理程序发回给它。

所以...对基于 URL 图像的 AsyncDownload 的 Gallery 和 Cursor 适配器模式有什么想法吗?

谢谢

最佳答案

是的,但我使用了自己的图像加载器实现,与 DroidFu 非常相似(具有内存/文件缓存、线程和非线程图像加载)。而且似乎您无法使用 Gallery + Cursor Adapter 设置通过线程加载图像,否则您会得到一个非常不稳定的滚动,而不是一个连续的平滑滚动。

这是一个示例代码,我对列表、画廊和 GridView 使用相同的光标适配器。

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);

}
}

关于android - Android 上的 Cursor Adapter 和 GalleryView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4339812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com