如果你想第一时间收到类似的文章 点击上面↑「爱开发」关注我们! RecyclerView利用ItemTouchHelper实现侧滑删除,拖拽功能 效果: 主要源码,具体实现感兴趣的请下载源码自行查看 项目地址 https://github.com/88ios/RecyclerViewCheckAll private void initData() { for (int i = 0; i < 20; i++) { Book model = new Book(); model.setId(i); model.setName("商品" + i); model.setDesc("描述" + i); list.add(model); } adapter = new ListAdapter(list,this, event); recyclerView.setHasFixedSize(true); recyclerView.setAdapter(adapter); //recyclerView.setLayoutManager(new GridLayoutManager(this, 3)); recyclerView.setLayoutManager(new LinearLayoutManager(this)); ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(adapter); mItemTouchHelper = new ItemTouchHelper(callback); mItemTouchHelper.attachToRecyclerView(recyclerView); checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { try { HashMap<Integer, Boolean> map = new HashMap<Integer, Boolean>(); int count = 0; if (isChecked) { isChange = false; } for (int i = 0, p = list.size(); i < p; i++) { if (isChecked) { map.put(i, true); count++; } else { if (!isChange) { map.put(i, false); count = 0; } else { map = adapter.getMap(); count = map.size(); } } } selected.setText("已选" + count + "项"); adapter.setMap(map); } catch (Exception e) { e.printStackTrace(); } } }); adapter.setOnItemClickListener(new ListAdapter.ItemClickListener() { @Override public void onItemClick(RecyclerView.ViewHolder holder, int positon) { Log.e("onItemClick", "" + positon); } @Override public void onItemLongClick(final RecyclerView.ViewHolder holder, final int positon) { Log.e("onItemLongClick", "" + positon); } }); } public void onEventMainThread(SelectEvent event) { int size = event.getSize(); if (size < list.size()) { isChange = true; checkbox.setChecked(false); } else { checkbox.setChecked(true); isChange = false; } selected.setText("已选" + size + "项"); } @Override protected void onDestroy() { super.onDestroy(); event.unregister(this); } @Override public void onStartDrag(RecyclerView.ViewHolder viewHolder) { mItemTouchHelper.startDrag(viewHolder); } [END] 作者:洪生鹏,着重写有温度又有深度的职场感悟。 |
|