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); 

유니버설 이미지 로더 라이브러리에서 제공됩니다. 이 메소드는 이미지로드를 위해 스레드를 호출합니다. 이미지가 더 이상 필요하지 않으면 (스크롤을 발생 시킴) 스레드가 중지됩니다.

답변

0

스크롤 할 때 - 문제가 displayImage 코드에서 아마 - - 오히려 당신의 getView의 코드보다

+0

내가 메모에서 말했듯이 이미지 로더 이미지를 표시 할 준비가 시간에 의해, 이미지는 더 이상 관련이 없습니다 displayImage는 웹 (또는 디스크)에서 이미지를 가져 오는 스레드를 사용하는 Universal Image Loader의 메서드입니다. – GVillani82

+0

해당 라이브러리의 pauseOnScrollListener를 확인하십시오. –

+0

및 fling에서 일시 중지 –

관련 문제