android - 在 onBindViewHolder RecyclerView 中添加滑动

标签 android android-recyclerview swipe

大家好,我正在尝试在 onBindViewHolder 中使用滑动,因为我的项目来自数据库,但我认为它似乎不起作用,因为我的应用程序崩溃了。我将此自定义光标适配器用于我的 recyclerview https://gist.github.com/skyfishjy/443b7448f59be978bc59这是我的代码。

@Override
public void onBindViewHolder(ItemViewHolder viewHolder, Cursor cursor) {
        mItems = cursor;
        final int     id      = cursor.getInt(cursor.getColumnIndex(MyDBHandler.COLUMN_ID));
        final String  title   = cursor.getString(cursor.getColumnIndex(MyDBHandler.COLUMN_TITLE_REMINDER));
        final String  desc    = cursor.getString(cursor.getColumnIndex(MyDBHandler.COLUMN_DESC_REMINDER));
        final String  date    = cursor.getString(cursor.getColumnIndex(MyDBHandler.COLUMN_DATE_REMINDER));

        viewHolder.title.setText(title);

        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, String.valueOf(id), Toast.LENGTH_SHORT).show();
            }
        });

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

            @Override
            public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
                int itemPosition = viewHolder.getAdapterPosition();
                notifyItemRemoved(itemPosition);
                dbHandler.deleteReminder(id);
            }
        };

        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
        itemTouchHelper.attachToRecyclerView(this.myRecyclerview);
}

无论如何,我可以通过滑动来关闭我在 recyclerview 中的元素吗?

最佳答案

从 onBindViewHolder 中删除以下代码块,并从您初始化适配器的位置添加您的 Activity 或 fragment 。

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

            @Override
            public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {     // type cast your view holder
                // CusrsorViewHolder cViewHolder = (CursorViewHolder)viewHolder;
                int itemPosition = viewHolder.getAdapterPosition();
                notifyItemRemoved(itemPosition);
                dbHandler.deleteReminder(cViewHolder.id);
            }
        };

 ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
 itemTouchHelper.attachToRecyclerView(this.myRecyclerview);
 //put the above code before the following method in your activity or fragment
 //this.RecylerView.setAdapter(adapter)

在onBindViewHolder中设置你的id

@Override
public void onBindViewHolder(ItemViewHolder viewHolder, Cursor cursor) {
        mItems = cursor;
        final int     id      = cursor.getInt(cursor.getColumnIndex(MyDBHandler.COLUMN_ID));
        viewHolder.id = id;
}

关于android - 在 onBindViewHolder RecyclerView 中添加滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33445058/

相关文章:

java - Firebase Recyclerview 不显示数据

React-native:如何在滑动时更改行的内容或样式?

javascript - 我如何从滑动检测中获得负数?

android - MPAndroidChart 使用 Proguard 编译错误

android - RecyclerView 不更新数据

android - Android 上的 BouncyCaSTLe

java - 如何使用 Firebase 向管理员显示所有登录用户数据?

ios - 如何在 SwiftUI 中以编程方式在屏幕的某些部分模拟点击/滑动手势?

java - 随机音频按钮在设定的点击次数后停止工作

java - Android 应用程序的时间圈动画