【发布时间】:2015-06-15 16:40:34
【问题描述】:
我在 RecyclerView 中有一个简单项目的列表。使用 ItemTouchHelper 很容易实现“滑动删除”行为。
public class TripsAdapter extends RecyclerView.Adapter<TripsAdapter.VerticalItemHolder> {
private List<Trip> mTrips;
private Context mContext;
private RecyclerView mRecyclerView;
[...]
//Let adapter know his RecyclerView. Attaching ItemTouchHelper
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new TripItemTouchHelperCallback());
itemTouchHelper.attachToRecyclerView(recyclerView);
mRecyclerView = recyclerView;
}
[...]
public class TripItemTouchHelperCallback extends ItemTouchHelper.SimpleCallback {
public TripItemTouchHelperCallback (){
super(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.RIGHT);
}
@Override
public boolean onMove(RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
//some "move" implementation
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
//AND WHAT HERE?
}
}
}
效果很好。但是我还需要执行一些撤消操作或确认。最好的方法是什么?
第一个问题是如何插入另一个视图来代替删除确认对话框?如果用户选择撤消删除,如何恢复刷过的项目?
【问题讨论】:
-
“最好的方法是什么?” -- an undo bar 或小吃店。 “如果用户选择撤消删除,如何恢复刷过的项目?” -- 更新您的模型,然后在
RecyclerView.Adapter上调用适当的notify...()方法来指示您的模型发生了什么变化。
标签: android android-recyclerview