android recyclerView item 右滑展示删除和收藏
时间: 2023-06-02 09:01:35 浏览: 192
为了在 Android RecyclerView 中实现右滑展示删除和收藏,您可以考虑使用 ItemTouchHelper 类。以下是一些步骤:
1. 创建一个类继承 ItemTouchHelper.Callback。
2. 实现 getMovementFlags() 方法来指定哪些方向的滑动是允许的。
3. 实现 onSwiped() 方法来处理右滑的操作。您可以在这个方法中执行删除或者收藏的操作。
4. 创建一个 RecyclerView.Adapter 并且继承 RecyclerView.ViewHolder。
5. 在 onBindViewHolder() 方法中,为每个 ViewHolder 设置一个滑动操作。
6. 在 RecyclerView 中设置 ItemTouchHelper,以启用滑动操作。
以下是一个示例:
```java
public class SwipeToDeleteAndFavoriteCallback extends ItemTouchHelper.Callback {
private final RecyclerViewAdapter mAdapter;
public SwipeToDeleteAndFavoriteCallback(RecyclerViewAdapter adapter) {
mAdapter = adapter;
}
@Override
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
return makeMovementFlags(0, swipeFlags);
}
@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) {
int position = viewHolder.getAdapterPosition();
if (direction == ItemTouchHelper.END) {
mAdapter.addToFavorites(position);
} else if (direction == ItemTouchHelper.START) {
mAdapter.deleteItem(position);
}
}
}
```
在 RecyclerViewAdapter 的 onBindViewHolder() 方法中,您可以为每个 ViewHolder 设置一个滑动操作,例如下面这样:
```java
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
SwipeToDeleteAndFavoriteCallback swipeToDeleteAndFavoriteCallback = new SwipeToDeleteAndFavoriteCallback(this);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(swipeToDeleteAndFavoriteCallback);
itemTouchHelper.attachToRecyclerView(mRecyclerView);
holder.itemView.setOnTouchListener((v, event) -> {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
itemTouchHelper.startSwipe(holder);
}
return false;
});
}
```
最后,在 RecyclerView 中设置 ItemTouchHelper,以启用滑动操作:
```java
SwipeToDeleteAndFavoriteCallback swipeToDeleteAndFavoriteCallback = new SwipeToDeleteAndFavoriteCallback(mAdapter);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(swipeToDeleteAndFavoriteCallback);
itemTouchHelper.attachToRecyclerView(mRecyclerView);
```
阅读全文