文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android使用RecyclerView实现列表数据选择操作

2023-05-31 01:07

关注

这些时间做安卓盒子项目,因为安卓电视的显示器比较大,所以一个界面显示 很多数据 ,最多的时候,一个Actvity中用到了好几个RecyclerView。

在RecyclerView中实现Item选中处理时,发现用CheckBox的OnCheckedChangeListener监听事件时,会达不到预期,所以用了OnClickListener来实现。

主界面代码:

public class CheckRecyclerViewActivity extends AppCompatActivity implements CheckAdapter.CheckItemListener {  //适配器  private CheckAdapter mCheckAdapter;  //列表  private RecyclerView check_rcy;  //全选操作  private CheckBox check_all_cb;  //列表数据  private List<CheckBean> dataArray;  //选中后的数据  private List<CheckBean> checkedList;  private boolean isSelectAll;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_check_recyclerview);    checkedList = new ArrayList<>();    initDatas();    initViews();  }  private void initViews() {    check_rcy = (RecyclerView) findViewById(R.id.check_rcy);    check_all_cb = (CheckBox) findViewById(R.id.check_all_cb);    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);    check_rcy.setLayoutManager(linearLayoutManager);    mCheckAdapter = new CheckAdapter(this, dataArray, this);    check_rcy.setAdapter(mCheckAdapter);    //如果使用CheckBox的OnCheckedChangeListener事件,则选中事件会有一些意想不到的结果,欢迎体验    //在列表Item中的CheckBox也一样的效果    check_all_cb.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View view) {        isSelectAll = !isSelectAll;        checkedList.clear();        if (isSelectAll) {//全选处理          checkedList.addAll(dataArray);        }        for (CheckBean checkBean : dataArray) {          checkBean.setChecked(isSelectAll);        }        mCheckAdapter.notifyDataSetChanged();      }    });  }  private void initDatas() {    dataArray = new ArrayList<>();    for (int i = 0; i < 20; i++) {      CheckBean bean = new CheckBean();      bean.setOrder(String.valueOf(i + 1));      bean.setName("名称_" + i);      bean.setContent("第" + i + "条内容");      bean.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));      dataArray.add(bean);    }  }  @Override  public void itemChecked(CheckBean checkBean, boolean isChecked) {    //处理Item点击选中回调事件    if (isChecked) {      //选中处理      if (!checkedList.contains(checkBean)) {        checkedList.add(checkBean);      }    } else {      //未选中处理      if (checkedList.contains(checkBean)) {        checkedList.remove(checkBean);      }    }    //判断列表数据是否全部选中    if (checkedList.size() == dataArray.size()) {      check_all_cb.setChecked(true);    } else {      check_all_cb.setChecked(false);    }  }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯