根据 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 个项目的列表时,该应用在尝试处理图像时会遇到严重的卡顿问题。
是否有更有效的解决方案?
最佳答案
与其按需从列表适配器中加载图像,不如从 Activity 的 onCreate 中启动一个线程来加载图像怎么样?当加载每个图像时,您可以触发对 Activity 的回调以在列表中显示图像。回调方法类似于:
void onImageDownloadComplete(int pos, BitMap bm) {
ListView lv = getListView();
View listItem = lv.getChildAt(pos);
ImageView img = (ImageView)listItem.getChildAt(indexOfIcon);
img.setImageBitmap(bm);
}
关于android - 提高 ListView 从 SD 加载图片到 ListView 时的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2293488/