我有一个ListView绑定自定义适配器,它的工作正常:
private class Placeslist extends ArrayAdapter<ArrayList<String>> {
private ArrayList<ArrayList<String>> items;
public Placeslist(Context context, int textViewResourceId,
ArrayList<ArrayList<String>> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.locationgpsrow, null);
}
ArrayList<String> o = items.get(position);
if (o != null) {
// Binding here
TextView tv1 = (TextView) v.findViewById(R.id.txt1);
tv1.setText(o.get(0));
ImageView imView = (ImageView) v.findViewById(R.id.imageView1);
//o.get(1) // Image url e.g. http://www.some-website/image.jpg
}
return v;
}
}
我的某个数组元素中有图像源网址,我需要下载图像并将其设置为listview项目自定义布局中的 ImageView 。而且,我也有代码!
ImageView imView = (ImageView) findViewById(R.id.imageView1);
HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
is.close();
imView.setImageBitmap(Bitmap.createScaledBitmap(bmImg,width, 身高,真));
我可以在上面的 getView()中使用它来设置imageView源代码。但我想要的是让列表视图绑定到适配器而不加载图像(因为它将是繁重的过程)。然后在加载listView之后,分别启动绑定行中的所有ImageView。他们是一种实现这个或任何可以将图像下载过程与listView绑定分开的东西的方法吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以选择universalimageloader等第三方图书馆和其他图书馆。
否则,如果您想自己处理它,只需创建一个asyncTask从url下载图像并将其设置为imageView onPostExecute callBack。您可以将参数(ImageView img,String Url)传递给此AsyncTask的构造函数,在DoinBackground()中下载图像,最后将其设置为img onPostExecute();
你可以从适配器的getView()方法触发这个asyncTask,可能需要在UI线程上执行此操作。
答案 2 :(得分:1)
我使用过Picasso Image库,它可以轻松地处理缓存和下载。看看这里: http://square.github.io/picasso/
Universal Image Loader也做得很好,配置更多选项: https://github.com/nostra13/Android-Universal-Image-Loader
您可能希望使用像这样的库,因为它会保存数据,而不是做那么多的网络操作。
答案 3 :(得分:0)
使用SmartImageView将URL加载到图像。 http://loopj.com/android-smart-image-view/
答案 4 :(得分:0)
您需要阅读有关异常加载图像的listview的延迟加载。您可以使用任何可用的库。
关于listview和延迟加载的完整教程:
http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/