这些时间做安卓盒子项目,因为安卓电视的显示器比较大,所以一个界面显示 很多数据 ,最多的时候,一个Actvity中用到了好几个RecyclerView。
创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目网站制作、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元杂多做网站,已为上家服务,为杂多各地企业和个人服务,联系电话:18982081108在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 ListdataArray; //选中后的数据 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 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); } } }