前四项在自定义 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的时候在列表项上设置自定义数据,这样不好。您始终设置自定义数据,无论是可重用视图还是新视图。