zhj5979
zhj5979
2014-12-15 09:39
采纳率: 50%
浏览 2.0k

Android listview重复的问题

有谁遇到过这样类似的问题,说说方法呗
简单描述下:
比如我在每个item 里面加一个CheckBox,我随变选一俩个,但是我向下滑动的时候 发现下面重复出现了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • zxq521lqy
    狮子座的小强2019 2014-12-22 05:45
    已采纳

    private static HashMap isSelected = new HashMap();
    // 记录状态
    HashMap state = new HashMap();

    private void initDate() {
        for (int i = 0; i < approveList.size(); i++) {
            getIsSelected().put(i, false);
        }
    }
    
    这是关键部分,在点击事件中
    h.itemBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                if (isChecked) {
                    state.put(position, isChecked);
                    getIsSelected().put(position, true);
    
                } else {
                    getIsSelected().put(position, false);
                    state.remove(position);
                }
    
            }
        });
        h.itemBox.setChecked(state.get(position) == null ? false : true);
    
    点赞 评论
  • lxq_xsyu
    lxq_xsyu 2014-12-15 10:15

    这个是因为getView方法的View重用导致的,你可以在数据中添加一个字段记录开关状态,然后在getView方法中每次去判断设置一下开关。

    点赞 评论
  • lincyang
    全速前行 2014-12-15 12:16

    自己写一个adapter继承自ArrayAdapter或者BaseAdapter来分别处理checkbox吧。

    点赞 评论
  • bdmh
    bdmh 2014-12-16 02:04

    肯定是你处理getview时有问题,记得在getview中重新填充你的view

    点赞 评论
  • s297165331
    二蛋和他的大花 2014-12-17 02:45

    View被重新生成了,用final保证固定~~

    点赞 评论
  • u014173499
    沧海c雨季 2014-12-29 03:10

    如果你用了 ViewHolder 要注意if else 的完整性

    点赞 评论

相关推荐