ViewHolder数据错乱BUG

需求是这样的,在列表中用一个图标标示某个item是已经被接下或者完成的任务。

     对于文件有这样的操作,进入列表后第一页面展示正常,但是加载更多后同样位置出现了同样的标志。这不是我想要的效果

   我的解决办法是在viewholder绑定控件并附值后,添加一个else方法复写之前的内容。

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

        //获取纳秒时间 更加精确
        ViewHolder holder = new ViewHolder();
        if (convertView == null) {

            //由于我们只需要将XML转化为View,并不涉及到具体的布局,所以第二个参数通常设置为null
            convertView = mLayoutInflater.inflate(R.layout.tasklistitem, null);
            holder.title = (TextView) convertView.findViewById(R.id.task_title);
            holder.explain = (TextView) convertView.findViewById(R.id.task_explain);
            holder.price = (TextView) convertView.findViewById(R.id.task_price);
            holder.faraway = (TextView) convertView.findViewById(R.id.task_distance);
            holder.zhuangtai = (ImageView) convertView.findViewById(R.id.task_zhuangtai_image);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        // 取出bean对象
        ItemBean bean = mDataList.get(position);
        // 设置控件的数据
        holder.title.setText(bean.itemTitle);
        holder.explain.setText(bean.itemContent);
        holder.price.setText(bean.itemPrice);
        holder.faraway.setText(bean.itemFaraway);
        if(!bean.itemReceiver.equals("null")){
            holder.zhuangtai.setImageResource(R.mipmap.aboutus1);
        }else{
            holder.zhuangtai.setImageResource(R.mipmap.studio);
        }
        return convertView;
    }

如上图。

原文地址:https://www.cnblogs.com/wobeinianqing/p/5442624.html