我有一个ListView,我从服务器上填充。一切工作正常,但唯一的问题是,滚动时下载的图像显示在错误的项目位置。只有几秒钟后,它才能在正确的位置显示正确的图像。Listview在滚动时在错误的位置显示图像
这是我的一个ArrayAdapter类,其中包括AsynchTask:
public class ApplicationAdapter extends ArrayAdapter<Application> {
private List<Application> items;
public ApplicationAdapter(Context context, List<Application> items) {
super(context, R.layout.app_custom_list, items);
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater li = LayoutInflater.from(getContext());
v = li.inflate(R.layout.app_custom_list, null);
}
Application app = items.get(position);
if (app != null) {
ImageView imageView = (ImageView) v.findViewById(R.id.appIcon);
TextView titleText = (TextView) v.findViewById(R.id.titleTxt);
if (imageView != null) {
String path_image = app.getImagePath();
// Call AsynchTask to load image into ImageView from path
DownloadImageTask1 d = new DownloadImageTask(imageView);
d.execute(path_image);
}
if (titleText != null) {
titleText.setText(app.getTitle());
}
}
return v;
}
private class DownloadImageTask1 extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask1(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(getRoundedCornerBitmap(result));
}
}
能有人请指引我正确的方向?我已经工作了好几天来解决这个问题。谢谢!!!
非常感谢你。我现在使用毕加索,它的作品很棒! – Sini 2014-10-18 18:01:03