2015-10-17 42 views
0

我有以下BaseAdapter,問題是我看到一個ImageView回收問題,其中圖像在另一個ImageView中顯示只有當滾動速度很快時纔會出現問題,我在這裏做錯了什麼?BaseAdapter回收問題 - Android

讓我引導你瞭解我正在嘗試做什麼的邏輯,我在代碼中有兩組組和用戶,都是ArrayList。

現在這個users.size()+ groups.size()給我的總數,並且在getView中我必須告訴這個視圖是屬於一個組還是用戶。

public class ProfileAdapter extends BaseAdapter { 

    ArrayList<String> groups = new ArrayList<>(); 
    ArrayList<String> users = new ArrayList<>(); 
    count = users.size() + groups.size(); 


    public int getCount() { 
     return count; 
    } 

    @Override 
    public View getView(final int position, View convertView, final ViewGroup parent) { 

     final ViewHolder holder; 
     if (convertView == null) { 
      convertView = infalter.inflate(R.layout.grid_item, null); 
      holder = new ViewHolder(); 
      holder.image = (ImageView) convertView.findViewById(R.id.grid_image); 
      holder.name = (TextView) convertView.findViewById(R.id.name); 
      convertView.setTag(holder); 

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

     holder.image.setImageResource(android.R.color.darker_gray); 


     if (position < groups.size()) { 
      //I'm in the group section so get me the group name 
      holder.name.setText(groups.get(position)); 
      TextDrawable drawable = TextDrawable.builder().beginConfig()...; 
      holder.image.setImageDrawable(drawable); 

     } else { 
     //I'm in the user section so get me the user image 
     //this is where the problem is happening 
     imageLoader.displayImage("file://" + users.get(position - groups.size()), holder.image); 

     } 

     return convertView; 
    } 


    class ViewHolder { 
     ImageView image; 
     TextView name; 


    } 


} 
+0

問題是什麼,你究竟面臨着?你在用戶部分看到textview還是圖像不到位? –

+0

ImageView問題,圖像不到位。 –

回答

0

我想說的問題是在這裏: imageLoader.displayImage - 是一個異步功能,並在邊緣情況下,任務可能會在圖像加載到回收ImageView的。

您應該在回收您正在回收的ImageView上回收調用:imageLoader.cancelDisplayTask的視圖時嘗試。

+1

是的,這似乎工作,謝謝你。 –

0

我想是因爲你正在使用UIL LIB它,結賬這個comment