新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Android使用RecyclerView實(shí)現(xiàn)列表數(shù)據(jù)選擇操作-創(chuàng)新互聯(lián)
這些時(shí)間做安卓盒子項(xiàng)目,因?yàn)榘沧侩娨暤娘@示器比較大,所以一個(gè)界面顯示 很多數(shù)據(jù) ,最多的時(shí)候,一個(gè)Actvity中用到了好幾個(gè)RecyclerView。
在RecyclerView中實(shí)現(xiàn)Item選中處理時(shí),發(fā)現(xiàn)用CheckBox的OnCheckedChangeListener監(jiān)聽(tīng)事件時(shí),會(huì)達(dá)不到預(yù)期,所以用了OnClickListener來(lái)實(shí)現(xiàn)。
主界面代碼:
public class CheckRecyclerViewActivity extends AppCompatActivity implements CheckAdapter.CheckItemListener { //適配器 private CheckAdapter mCheckAdapter; //列表 private RecyclerView check_rcy; //全選操作 private CheckBox check_all_cb; //列表數(shù)據(jù) private ListdataArray; //選中后的數(shù)據(jù) 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事件,則選中事件會(huì)有一些意想不到的結(jié)果,歡迎體驗(yàn) //在列表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 + "條內(nè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點(diǎn)擊選中回調(diào)事件 if (isChecked) { //選中處理 if (!checkedList.contains(checkBean)) { checkedList.add(checkBean); } } else { //未選中處理 if (checkedList.contains(checkBean)) { checkedList.remove(checkBean); } } //判斷列表數(shù)據(jù)是否全部選中 if (checkedList.size() == dataArray.size()) { check_all_cb.setChecked(true); } else { check_all_cb.setChecked(false); } } }
標(biāo)題名稱:Android使用RecyclerView實(shí)現(xiàn)列表數(shù)據(jù)選擇操作-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)源:http://www.ef60e0e.cn/article/hdhdd.html