對我來說這是非常大的麻煩,我一直在這工作數小時,並且沒有任何線索!在ListView中加載異步圖像時出現問題
我在ListView中加載異步圖像時出現問題。
我使用Parse.com作爲我的應用程序的後端,我從Parse.com類中檢索消息及其圖像。
一切工作正常,當我向上/向下滾動,或再次加載列表視圖,混合圖片和所有圖片以另一種順序重新加載,幾秒鐘後,他們將按我的意願訂購,但這是一個對我來說是個大問題。
我認爲這正在發生的事情,因爲我使用這樣的類上傳圖片
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap>
反正我的適配器類如下:
public class adapterview extends ArrayAdapter<Message> {
Bitmap image;
public adapterview(Context context, ArrayList<Message> Messages) {
super(context, 0, Messages);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
final Message m = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.custom2, parent, false);
}
TextView message = (TextView) convertView.findViewById(R.id.message);
TextView date = (TextView) convertView.findViewById(R.id.date);
TextView user = (TextView) convertView.findViewById(R.id.user);
message.setText(m.getMessage());
user.setText(m.getUser());
new DownloadImageTask((ImageView) convertView.findViewById(R.id.imageView1))
.execute(m.getImage());
return convertView;
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(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(result);
}
}
,這是我的消息類:
public class Message {
String message;
String user;
String phone;
String image;
String date;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
以及如何將項目添加到我的列表中:
contacts c = new contacts();
c.setName(object.get("name").toString());
c.setNumero(object.get("phone").toString());
ParseFile image = (ParseFile)object.get("Profil");
c.setProfil(image.getUrl());
messagelist.addcontact(c);
,這是如何我從填充在MainActivity列表視圖代碼:
adapterview adapter = new adapterview(MainActivity.this, (ArrayList<Message>) messagelist);
list.setAdapter(adapter);
下面是兩張截圖,當我向下滾動,然後向上第一的listItem變化,使畫面! !無緣無故,然後幾秒鐘後回到正常的圖片。
如果你可以建議我如何可以從網址上傳圖像到ImageView的一種新的方式,那將是巨大的。
謝謝,這解決了我的問題:) – 2015-02-06 12:38:23
@NadadorBase基地樂於幫助 – 2015-02-06 15:42:31