2014-03-13 43 views
1

這是非常奇怪的,當我滾動緩慢或中等一切都沒關係,但然後我滾動非常快,有時(1/5)圖片加載錯誤的位置。ListView適配器圖像加載錯誤的位置

View mView; 
    ViewHolder holder; 

    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     mView = inflater.inflate(R.layout.item_suggested_user, parent, false); 
     holder = new ViewHolder(); 

     holder.circleImage = (CircleImageView) mView.findViewById(R.id.circle_image); 
     holder.fullName = (TextView) mView.findViewById(R.id.item_suggested_fullname); 
     holder.img1 = (SmartImageView) mView.findViewById(R.id.item_suggested_img1); 


     mView.setTag(holder); 

    }else{ 
     mView = convertView; 
     holder = (ViewHolder) mView.getTag(); 
    } 


    final SuggestedUsersModel item = (SuggestedUsersModel) getItem(position); 
    holder.fullName.setText(mList.get(position).getFullname()); 

    if (item.getProfilepictureurl() != null) { 
     Picasso.with(mContext) 
       .load(item.getProfilepictureurl().replaceAll(" ", "%20")) 
       .placeholder(R.drawable.ic_contact) 
       .error(android.R.drawable.ic_dialog_alert) 
       .into(holder.circleImage); 
    } else { 
     holder.circleImage.setImageResource(R.drawable.ic_contact); 
    } 

     String type = item.getPosts().get(0).getMediatype(); 
     //For Image 1 
     if (type.equalsIgnoreCase("text")) { 
      holder.img1.setImageResource(R.drawable.text_post_background); 
     } else if (type.equalsIgnoreCase("image")) { 
      if (item.getPosts().get(0).getUri() != null) { 

       Picasso.with(mContext) 
         .load(item.getPosts().get(0).getUri().replaceAll(" ", "%20")) 
         .placeholder(R.drawable.ic_contact) 
         .error(android.R.drawable.ic_dialog_alert) 
         .into(holder.img1); 
      } else { 
       holder.img1.setImageResource(R.drawable.ic_contact); 
      } 
     } else { 
      if (item.getPosts().get(0).getThumbnailuri() != null) { 
       Picasso.with(mContext) 
         .load(item.getPosts().get(0).getThumbnailuri().replaceAll(" ", "%20")) 
         .placeholder(R.drawable.ic_contact) 
         .error(android.R.drawable.ic_dialog_alert) 
         .into(holder.img1); 
      } else { 
       holder.img1.setImageResource(R.drawable.ic_contact); 
      } 
     } 

我正在使用畢加索,但我試過幾乎所有的東西,結果是一樣的。 我已經知道listview的工作方式以及所有重複使用的項目,但是我無法解釋爲什麼會發生這種情況。

請給我一些想法和解決方案。 感謝

更新1:我添加按鈕,我改變文本上點擊,所以這裏再次發生相同的(當滾動按鈕得到混合在其他位置),那麼我是不是庫加載的圖片。有人可以請幫助。

+1

你真的需要'查看MView的;'? –

+0

我使用[this](http://stackoverflow.com/a/3068012/2389078)項目解決了此問題,並從此建議所有人都這樣做。這也可以幫助你。 – DroidDev

+0

@fremmedehenvendelser,不是真的,但我沒有也試過.. – user1730007

回答

2

請勿使用if-else作爲convertView的條件。

只要穿上,

LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
mView = inflater.inflate(R.layout.item_suggested_user, parent, false); 
holder = new ViewHolder(); 

holder.circleImage = (CircleImageView) mView.findViewById(R.id.circle_image); 
holder.fullName = (TextView) mView.findViewById(R.id.item_suggested_fullname); 
holder.img1 = (SmartImageView) mView.findViewById(R.id.item_suggested_img1); 

讓我知道發生什麼事..

+0

類似的問題http://stackoverflow.com/questions/22347505/strange-behaviour-in-android-listview-when-loading-i-and-with-asynctask/22347703#22347703 – user370305

+0

這解決了這個問題,但滾動真的很糟糕。有沒有其他方法來解決這個問題,並重新使用'convertView' – user1730007

+0

列表的滾動取決於你的圖像加載器。 – user370305

相關問題