2016-01-13 70 views
-2

我面臨一個問題,也看到這個 this鏈接,但沒有幫助。前四個項目重複自定義ListView android

項目是{a.b,c,d,e,f,g}但顯示{a,b,c,d,a,b,c,d}。

@Override 
public View getView(int i, View view, ViewGroup parent) { 
    final ImageHolder imageHolder = new ImageHolder(); 
    ViewHolder viewHolder = new ViewHolder(); 

    if (view == null){ 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(android.app.Service.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.feeds_list_facebook, null); 
     //viewHolder = new ViewHolder(); 
     viewHolder.message = (TextView) view.findViewById(R.id.message); 
     viewHolder.imageView = (ImageView) view.findViewById(R.id.image); 
     Event event = events.get(i); 
     Log.i("SIZE",events.size() + ""); 
     Log.i("MESSAGE", event.getMessage()); 
     Log.i("IMAGE__URL", event.getPicture()); 
     viewHolder.message.setText(""); 
     viewHolder.imageView.setImageBitmap(null); 

     viewHolder.message.setText(event.getMessage()); 

     mImageLoader.DisplayImage(event.getPicture(), viewHolder.imageView); 
     view.setTag(viewHolder); 

    } 
    viewHolder = (ViewHolder) view.getTag(); 

    return view; 
} 

和我viewHolder

class ViewHolder { 
    TextView message; 
    ImageView imageView; 
} 
+2

還有一個......如果查看被重用,您不會設置值... https://www.youtube.com/watch?v=wDBM6wVEO70 – Selvin

回答

1

招行之前,這些線路return view;

viewHolder.message = (TextView) view.findViewById(R.id.message); 
    viewHolder.imageView = (ImageView) view.findViewById(R.id.image); 
    Event event = events.get(i); 
    Log.i("SIZE",events.size() + ""); 
    Log.i("MESSAGE", event.getMessage()); 
    Log.i("IMAGE__URL", event.getPicture()); 
    viewHolder.message.setText(""); 
    viewHolder.imageView.setImageBitmap(null); 
    viewHolder.message.setText(event.getMessage()); 

正在重用的觀點,這是很好的,因爲現在你只膨脹的觀點時,有是不可重用的,所以基本上在開始填充列表時。

但是,您也只是在充氣時在列表項上設置自定義數據,這並不好。您始終設置自定義數據,如果它是可重複使用的視圖或新的視圖。