짧은 제목 (ImageView + TexiView)으로 사진 갤러리를 표시하는 ListView가 있습니다. AsyncTask를 사용하여 다운로드 작업을 수행했습니다. 그러나 문제는 때때로 잘못된 이미지가 표시되고 갑자기 변경된다는 것입니다 (여러 번 발생할 수 있음). 예 : IA BC는 ListView에 표시되고 ABC의 경우 이미지 m1 m2 m3이 각각 표시됩니다. 응용 프로그램을 실행하면 A의 imageView에 m1, m2 또는 m3이 표시되고 자주 변경 될 수 있습니다. 내 코드는 다음과 같습니다.
다운 클래스 :
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage = null;
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) {
if(result == null){
bmImage.setImageResource(R.drawable.loading);
}else{
bmImage.setImageBitmap(result);
}
}
}
ListView 용 어댑터 :
public View getView(int position, View convertView, ViewGroup parent){
item item1 = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item1, parent, false);
}
ImageView iv = (ImageView) convertView.findViewById(R.id.img);
TextView ttv = (TextView) convertView.findViewById(R.id.p_title);
TextView itv = (TextView) convertView.findViewById(R.id.p_price);
/**
*Download Image
*/
String img_url;
img_url = item1.getImg_url();
new DownloadImageTask((ImageView) convertView.findViewById(R.id.img))
.execute(img_url);
ttv.setText(item1.getTitle());
itv.setText("$"+item1.getPrice());
return convertView;
}
활동:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_promotion2);
gridView = (GridView) findViewById(R.id.gridview);
getPromotionByRequest(previousPage, data);//Get Data for items
itemAdapter = new promotionAdapter(this, items);
//progress..........
gridView.setAdapter(itemAdapter);
setupListViewListener();
}
답변 해 주셔서 감사합니다. 안타깝게도 여전히 문제가 발생합니다. 마지막으로 각 어댑터에서 "Picasso" 를 사용하여 문제를 해결했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다