【发布时间】:2014-10-15 18:09:36
【问题描述】:
我有一个带有自定义适配器的列表视图,每一行都有一个图像视图,我下载图像以通过 URL 从远程服务器设置,并将其传递给 AsyncTask。我的代码正在运行,但是当我滚动列表视图时,会再次下载已下载的 ImageViews 图像。
我想为第一次创建列表视图下载图像。我研究了很多主题,但我什么都不懂。我该怎么办?
我的自定义适配器在下面...
public ListAdapter(Context context, ProgramInfo values) {
this.context = context;
this.values = values;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount(){
return values.getSize();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = mInflater.inflate(R.layout.list_row, null);
TextView programName = (TextView)rowView.findViewById(R.id.programName);
TextView programTime = (TextView)rowView.findViewById(R.id.programTime);
TextView programState = (TextView)rowView.findViewById(R.id.programState);
ImageView programImage = (ImageView)rowView.findViewById(R.id.programImage);
programName.setText(values.programNames.get(position));
programTime.setText(values.programTimes.get(position));
new DownloadImage(programImage).execute(values.programImageUrls.get(position)); // download images
return rowView;
}
还有我的 AsyncTask ...
private class DownloadImage extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImage(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
HttpURLConnection urlConnection = (HttpURLConnection)new URL(urldisplay).openConnection();
urlConnection.setDoInput(true);
InputStream in = urlConnection.getInputStream();
mIcon11 = BitmapFactory.decodeStream(in);
urlConnection.disconnect();
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
谢谢...
【问题讨论】:
-
在列表视图中使用通用图像加载器库进行图像视图
-
查看视图持有者模式以优化回收。您也可以使用位图缓存...
标签: android listview android-asynctask imageview