android开发实现选择列表,Android使用RecyclerView实现列表数据选择操作

本文介绍了如何在Android应用中使用RecyclerView实现列表数据的选择操作。通过设置OnClickListener而不是OnCheckedChangeListener处理CheckBox选中状态,配合自定义适配器和接口回调,实现了列表项的选中和全选功能。
摘要由CSDN通过智能技术生成

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

发布时间:2020-08-31 17:50:13

来源:脚本之家

阅读:76

作者:迟做总比不做强

这些时间做安卓盒子项目,因为安卓电视的显示器比较大,所以一个界面显示 很多数据 ,最多的时候,一个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 dataArray;

//选中后的数据

private List 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值