zoukankan      html  css  js  c++  java
  • RecyclerView item 状态错乱

    adapter中:

    1 private List<Integer> checkboxUserIdList = new ArrayList<>();

    在如下这个方法中:

    1 public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) 

    将item 的 root layout 设置tag为当前的position:

    // 设置item背景颜色的view,将其setTag
    itemViewHolder.rl_item.setTag(position);

    判断的时候,就可以获取root layout的tag值,将其进行判断,设置item当前状态。

    1 if(checkboxUserIdList.contains(itemViewHolder.rl_item.getTag())) {
    2       itemViewHolder.rl_item.setEnabled(false);
    3       itemViewHolder.check_box.setEnabled(true);
    4       itemViewHolder.rl_item.setBackgroundResource(R.color.gray_bg);
    5  } else {
    6       itemViewHolder.rl_item.setEnabled(true);
    7       itemViewHolder.check_box.setEnabled(false);
    8       itemViewHolder.rl_item.setBackgroundResource(R.color.white);
    9  }

    其中是因为ViewHolder复用,导致的状态的错乱,所以想要解决这个item的状态问题:

    1、viewholder就不进行复用,也不存在checkbox 混乱选中的问题了,但是 你滑动的时候卡的要死:

    1 viewHolder.setIsRecyclable(false); 

    2、在获取到的bean中设置一个标志位,但是需要修改bean 。虽然只是加个字段的问题,但是不建议。

    3、也就是上面写出来的代码。

    参考:其实跟listview 复用一样。

    Recycleview checkbox 复用出现混乱解决方法

    Android ListView CheckBox状态错乱

  • 相关阅读:
    jenkins 安装插件失败
    win10 右键新建卡顿
    Linux发布java jar包
    Linux搭建java环境
    java代码检出打包
    虚拟机Vmware使用记录
    地图坐标
    vs2019 扩展工具
    服务器内网穿透
    intelliJ 软件项目打开运行
  • 原文地址:https://www.cnblogs.com/CharlesGrant/p/5171133.html
Copyright © 2011-2022 走看看