分享

RecyclerView 利用ItemTouchHelper实现侧滑删除,拖拽效果

 爱开发 2022-08-02 发布于广东

如果你想第一时间收到类似的文章

点击上面↑「爱开发」关注我们!

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]

作者:洪生鹏,着重写有温度又有深度的职场感悟。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多