Это очень большая проблема для меня, я много часов работал над этим и не знал!У вас возникли проблемы с загрузкой асинхронного изображения в 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! ! без каких-либо причин, а затем через несколько секунд вернитесь к нормальной картине.
Если вы можете предложить новый способ, как я могу загрузить изображения из URL в ImageView, что было бы здорово.
Спасибо, это решило мою проблему :) –
@NadadorBase Base рада помочь –