我想创建一个延迟加载适配器以与Gallery
小部件一起使用。
也就是说立即getView()
返回一个ImageView
,稍后一些其他机制会异步调用它的setImageBitmap()
方法。我通过创建一个ImageView
扩展的“懒惰”来做到这一点ImageView
。
public class GalleryImageView extends ImageView {
// ... other stuff here ...
public void setImage(final Looper looper, final int position) {
final Uri uri = looper.get(position);
final String path = looper.sharePath(position);
new Thread(new Runnable() {
@Override
public void run() {
GalleryBitmap gbmp = new GalleryBitmap(context, uri, path);
final Bitmap bmp = gbmp.getBitmap(); // all the work is here
handler.post(new Runnable() {
@Override
public void run() {
if (GalleryImageView.this.getTag().equals(uri)) {
setImageBitmap(bmp);
}
}
});
}
}).start();
}
}
当我在 中缓慢滚动时Gallery
,中心图像不断弹出到中心。很难准确地解释,但这真的很烦人。我还为微调器适配器尝试了相同的方法,它在那里完美运行。
有任何想法吗?