【问题标题】:Swiping to delete items of recyclerview doesnt work刷卡删除recyclerview的项目不起作用
【发布时间】:2020-06-15 13:37:47
【问题描述】:

我正在尝试将此功能添加到我的RecyclerView,当我向左或向右滑动一个项目时,它会被删除。
但是当我执行我的应用程序时,我什至无法滑动其中一项。
感谢任何帮助

new ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(mRecyclerView);
ItemTouchHelper.SimpleCallback itemTouchHelperCallback= new ItemTouchHelper.SimpleCallback(0,
            ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
            mExampleList.remove(viewHolder.getAdapterPosition());
            mAdapter.notifyDataSetChanged();
            saveData();
        }

顺便说一句,RecyclerView 不在我的 MainActivity 中,而是在可以从 MainActivity 中的 Drawer 菜单打开的 Fragment 中,所以问题可能出在哪里?

【问题讨论】:

    标签: java android-studio android-recyclerview swipe itemtouchhelper


    【解决方案1】:

    好的,我终于找到了问题所在。 我只需要在构建 RecyclerView 的方法中而不是在 onCreate 方法中初始化 ItemTouchHelper。

    所以这就是代码的样子:

     private void buildRecyclerView() {
            mRecyclerView = view.findViewById(R.id.recyclerview);
            mLayoutManager = new LinearLayoutManager(getActivity());
            mAdapter = new ExampleAdapter(mExampleList);
            mRecyclerView.setLayoutManager(mLayoutManager);
            new ItemTouchHelper(itemTochHelperCallback).attachToRecyclerView(mRecyclerView);
            mRecyclerView.setAdapter(mAdapter);
        }
        ItemTouchHelper.SimpleCallback itemTochHelperCallback=new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT) {
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
                return false;
            }
    
            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
                mExampleList.remove(viewHolder.getAdapterPosition());
                mAdapter.notifyDataSetChanged();
            }
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      相关资源
      最近更新 更多