В моем приложении Android Asyntask используется для загрузки изображений из Интернета в виде списка. Я хочу показать центральную часть изображения, и я попробовал загрузчик изображений для загрузки изображений, но проблема заключается в ясности изображения очень плох, но я использовал его для загрузки эскизов, потому что миниатюра очень маленькая. Так что я попробовал Asyntask, который приведен ниже. Проблема с этим методом - это изображение, показывающее другие изображения, что означает, что просмотр изображения в элементе первого списка покажет изображение следующего элемента списка, и через некоторое время он будет показывать правильный image.How я могу решить этот issue.Or предложить способ накладных изображений с хорошей clarity.Please помощи me.thanks заранееЗагрузка изображения Android в listview
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
ProgressBar mProgressBar;
String url;
public DownloadImageTask(ImageView bmImage, ProgressBar progressBar) {
this.bmImage = bmImage;
this.mProgressBar = progressBar;
}
@Override
protected void onPreExecute() {
mProgressBar.setVisibility(View.VISIBLE);
super.onPreExecute();
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
url = urldisplay;
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) {
Utilities.addBitmapToMemoryCache(url, result);
bmImage.setImageBitmap(result);
mProgressBar.setVisibility(View.GONE);
// result.recycle();
}
}
}
public View getView(final int position, View convertView, ViewGroup parent) {
vi = convertView;
int type = getItemViewType(position);
// Utilities.message_player = new MediaPlayer();
if (vi == null) {
inflater = LayoutInflater.from(mcontext);
if (type == ITEM_TYPE_ONE)
vi = inflater.inflate(R.layout.message_group_list_item, null);
else
vi = inflater.inflate(R.layout.listlastrow, null);
}
if (type == ITEM_TYPE_ONE) {
if (fontType == true) {
}
((ImageView) vi.findViewById(R.id.imageMessage)).setTag(position+"i");
Bitmap bmp = Utilities.getBitmapFromMemCache(feedsImage);
if(bmp == null){
DownloadImageTask dwnloadImgTask = new DownloadImageTask(((ImageView) vi.findViewWithTag(position+"i")),
((ProgressBar) vi.findViewById(R.id.progressBar1)));
dwnloadImgTask.execute(feedsImage);
}else{
((ImageView) vi.findViewById(R.id.imageMessage)).setImageBitmap(bmp);
}
}
}
Пожалуйста, покажите нам, где и как вы используете эту AsyncTask (вероятно, в вашем коде адаптера списка?) Ошибка может быть в методе getView из адаптера ... – Guian
@Guian getview method добавлен – user1767260