根据Romain Guy的高效适配器示例,我正在为ListView使用自定义适配器。
在我的适配器的getView()方法中,我使用以下代码为ImageView分配存储在SD上的jpg图像:
File f=new File(MovieThumbs.get(position));
if(f.length() > 0) {
holder.thumb.setImageBitmap(BitmapFactory.decodeFile(MovieThumbs.get(position)));
}
当使用此方法浏览大约200个项目的列表时,应用程序会在尝试处理图像时遭受不良口吃。
对此有更有效的解决方案吗?
答案 0 :(得分:1)
而不是根据需要从列表适配器中加载图像如何从活动的onCreate开始添加线程以加载图像?在加载每个图像时,您可以触发对活动的回调以在列表中显示图像。回调方法将是:
void onImageDownloadComplete(int pos, BitMap bm) {
ListView lv = getListView();
View listItem = lv.getChildAt(pos);
ImageView img = (ImageView)listItem.getChildAt(indexOfIcon);
img.setImageBitmap(bm);
}
答案 1 :(得分:0)
图像需要在后台线程中处理。需要考虑回收的观点。我尝试在我的示例代码中解决所有这些问题,它现在运行正常,您可以看看Lazy load of images in ListView