0
ListView
을 채우기 위해 ArrayAdapter
을 사용하고 있습니다.ListView 내부의 이미지 위치가 잘못되었습니다.
나는 getView
에 사용되는 코드는 다음
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if(rowView ==null){
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.rowlayout_member, parent, false);
}
TextView tvName = (TextView) rowView.findViewById(R.id.label);
TextView tvSurname = (TextView) rowView.findViewById(R.id.label1);
ImageView ivPhoto = (ImageView) rowView.findViewById(R.id.icon);
setRow(tvName ,tvSurname ,ivPhoto,name[position],surname[position],pics[position],); // name, surname and pics are the array of String passed to the adapter.
return rowView;
}
private void setRow(TextView tv1, TextView tv2, ImageView iv, String name, String surname, String photo){
iv.setImageResource(R.drawable.sagoma);
tv1.setText(String.valueOf(name));
tv2.setText(String.valueOf(surname)); //la quantità la devo prendere da un array di
if(photo!=null)
imageLoader.displayImage(basePath+photo, iv, options);
}
이 잘 작동하지만 내가 다음과 같은 문제가있다 : 내가 convertView
을 사용하고 있기 때문에, 뷰, 재활용 그래서 나는 위로 스크롤 할 때 그리고 아래로, 일부 이미지가 내 ListView
의 잘못된 행에 푸시되고 특히 빠르게 스크롤 할 때 발생할 수 있습니다.
보기의 재활용을 희생하지 않고 어떻게이 문제를 피할 수 있습니까?
참고 :
imageLoader.displayImage(basePath+immagine, iv, options);
유니버설 이미지 로더 라이브러리에서 제공됩니다. 이 메소드는 이미지로드를 위해 스레드를 호출합니다. 이미지가 더 이상 필요하지 않으면 (스크롤을 발생 시킴) 스레드가 중지됩니다.
내가 메모에서 말했듯이 이미지 로더 이미지를 표시 할 준비가 시간에 의해, 이미지는 더 이상 관련이 없습니다 displayImage는 웹 (또는 디스크)에서 이미지를 가져 오는 스레드를 사용하는 Universal Image Loader의 메서드입니다. – GVillani82
해당 라이브러리의 pauseOnScrollListener를 확인하십시오. –
및 fling에서 일시 중지 –