android - 提高 ListView 从 SD 加载图片到 ListView 时的效率

标签 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 个项目的列表时,该应用在尝试处理图像时会遇到严重的卡顿问题。

是否有更有效的解决方案?

最佳答案

与其按需从列表适配器中加载图像,不如从 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/

相关文章:

后台进程导致的Android线程问题

android - 如何将 Edittext 和 Button 添加到具有图标和文本的 Efficient Adapter

java - 调用需要 API 级别 16(当前最低为 14)withEndAction

python - Kivy ListItemButton - 如何增加按钮尺寸的高度?

android - Listview错误无法运行;强制关闭

Android,没有操作栏的选项卡

android - 如何以编程方式截取绘图表面的屏幕截图

Android 和 Google 自定义搜索 API

javascript - 从 native 代码访问 WebView 的 localStorage

android - ListView NullPointerException @ ArrayAdapter.createViewFromResource