将图像从SD加载到ListView时提高ListView效率

时间:2010-02-19 01:21:46

标签: android listview

根据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个项目的列表时,应用程序会在尝试处理图像时遭受不良口吃。

对此有更有效的解决方案吗?

2 个答案:

答案 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