我需要加载图片以进入ListLayout
的每一行。目前,我有ExecutorService
基本上执行以下操作:
pubilc View getView(...) {
...
this.executor.execute(new Runnable() {
public void run() {
// load image over HTTP
image.post(new Runnable() {
public void run() {
image.setImageBitmap(loadedBitmap);
}
});
}
});
}
不幸的是,这确实不能很好地工作,我的图像不断重新加载错误的值,并且我的应用程序在尝试滚动时崩溃。建议的方法是什么?
我已经更新了我的代码以使用AsyncTask
实现来加载图像(这样做更有意义,更不用说头疼),但是我应该如何在我的适配器中对我的任务进行排序?如果我需要一次只运行一个任务,那很好,但我基本上需要一个我可以添加的列表并随意无效。同样奇怪的是,当我第一次启动我的应用程序时,图像加载,但更多时候,它们最初加载到错误的位置,然后重新加载几次,直到一切看起来都没问题。奇怪的。是否有建议的方法这样做?
答案 0 :(得分:1)
我认为这样做的方法是让一个类来维护要下载的图像URL队列和一个(可变)数量的AsyncTasks来为队列提供服务。
班级应该能够:
convertView
中的getView()
参数中检测到此内容)答案 1 :(得分:0)
使用以下方法从互联网上加载图片。
资源资源; public static Bitmap LoadImage(String URL,BitmapFactory.Options options) { Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
// options.inSampleSize = 8;
if (in == null) {
bitmap = BitmapFactory.decodeResource(TennisAppActivity.mContext.getResources(),
R.drawable.profileplaceholder);
return bitmap;
} else {
options.inSampleSize = 5;
bitmap = BitmapFactory.decodeStream(in, null, options);
}
in.close();
} catch (IOException e1) {
}
return bitmap;
}
然后调用看起来舔这个
final BitmapFactory.Options bmOptions; bmOptions = new BitmapFactory.Options(); 的LoadImage(的ImageUrl,bmOptions);
我希望这是有帮助的。