简体   繁体   English

自定义ListView android中重复的前四项

[英]First Four Items repeating in custom ListView android

I am facing a problem and also seen this this link but no help.我遇到了一个问题,也看到了这个链接,但没有帮助。

Items are {ab,c,d,e,f,g} but showing {a,b,c,d,a,b,c,d}.项目是 {ab,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;
}

and my viewHolder和我的 viewHolder

class ViewHolder {
    TextView message;
    ImageView imageView;
}

Move these lines before the line return view;在行return view;之前移动这些行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());

You are reusing the view, which is good, because now you only inflate the view when there is no reusable one, so basically when populating the list in the beginning.您正在重用视图,这很好,因为现在您只在没有可重用视图时才膨胀视图,所以基本上是在开始填充列表时。

But you are also only setting the custom data on the list items when you are inflating, which is not good.但是你也只是在膨胀时设置了列表项上的自定义数据,这并不好。 You always set the custom data, either if it is a reusable view or a new one.无论是可重用视图还是新视图,您始终设置自定义数据。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM