前四项在自定义 ListView 中重复 android
First Four Items repeating in custom ListView android
我遇到了一个问题,也看到了这个
this link 但没有帮助。
项目是 {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;
}
将这些行移到 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());
你正在重用视图,这很好,因为现在你只在没有可重用视图时才膨胀视图,所以基本上是在一开始填充列表时。
但是你也只是在inflating的时候在列表项上设置自定义数据,这样不好。您始终设置自定义数据,无论是可重用视图还是新视图。
我遇到了一个问题,也看到了这个 this link 但没有帮助。
项目是 {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;
}
将这些行移到 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());
你正在重用视图,这很好,因为现在你只在没有可重用视图时才膨胀视图,所以基本上是在一开始填充列表时。
但是你也只是在inflating的时候在列表项上设置自定义数据,这样不好。您始终设置自定义数据,无论是可重用视图还是新视图。