在自己的线程中更新列表视图中图像的专业方法
professional way to update images in a listview in own thread
像 WhatsApp 那样更新 ListView 中的 ImageView 的专业方法是什么?我怎么会意识到这一点?似乎图像的更新和下载顺序需要 运行 在它自己的线程中,但是在哪种线程中这样我就不会因为更改 UI-线程而遇到麻烦?
对于异步图像加载,我强烈推荐 aquery。
最简单的加载图像的方法,而不用担心哪个线程会处理它,看起来像。-
aq.id(R.id.image1).image("http://www.vikispot.com/z/images/vikispot/android-w.png");
关于 ListView
s,你也应该看看 Delay Image Loading
部分。
看看 Picasso 图书馆。根据我的经验,它是最好的图像加载器库。非常易于使用,最重要的是在列表视图中进行了优化。-
专门用于在适配器中处理ImageView回收和下载取消
来自他们网站的示例-
自动检测适配器重复使用并取消之前的下载。
@Override
public void getView(int position, View convertView, ViewGroup parent) {
SquaredImageView view = (SquaredImageView) convertView;
if (view == null) {
view = new SquaredImageView(context);
}
String url = getItem(position);
Picasso.with(context).load(url).into(view);
}
像 WhatsApp 那样更新 ListView 中的 ImageView 的专业方法是什么?我怎么会意识到这一点?似乎图像的更新和下载顺序需要 运行 在它自己的线程中,但是在哪种线程中这样我就不会因为更改 UI-线程而遇到麻烦?
对于异步图像加载,我强烈推荐 aquery。
最简单的加载图像的方法,而不用担心哪个线程会处理它,看起来像。-
aq.id(R.id.image1).image("http://www.vikispot.com/z/images/vikispot/android-w.png");
关于 ListView
s,你也应该看看 Delay Image Loading
部分。
看看 Picasso 图书馆。根据我的经验,它是最好的图像加载器库。非常易于使用,最重要的是在列表视图中进行了优化。-
专门用于在适配器中处理ImageView回收和下载取消
来自他们网站的示例-
自动检测适配器重复使用并取消之前的下载。
@Override
public void getView(int position, View convertView, ViewGroup parent) {
SquaredImageView view = (SquaredImageView) convertView;
if (view == null) {
view = new SquaredImageView(context);
}
String url = getItem(position);
Picasso.with(context).load(url).into(view);
}