Android 使用RecyclerView拖放
示例
您可以使用RecyclerView来实现轻扫以关闭和拖放功能,而无需使用第三方库。
只需使用ItemTouchHelperRecyclerView支持库中包含的类。
ItemTouchHelper使用SimpleCallback回调实例化,并根据所支持的功能,应覆盖onMove(RecyclerView,ViewHolder,ViewHolder)和/或onSwiped(ViewHolder,int),最后附加到RecyclerView。
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT| ItemTouchHelper.RIGHT) {
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
//从适配器中删除项目
}
@Override
public boolean onMove(RecyclerView recyclerView,RecyclerView.ViewHolderviewHolder,RecyclerView.ViewHoldertarget) {
final int fromPos = viewHolder.getAdapterPosition();
final int toPos = target.getAdapterPosition();
//将适配器中的fromPos中的项目移动到toPos中。
return true;//如果移动则为true,否则为false
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);值得一提的是,SimpleCallback构造函数将相同的滑动策略应用于中的所有项目RecyclerView。在任何情况下,都可以通过覆盖方法来更新特定项目的默认滑动方向getSwipeDirs(RecyclerView,ViewHolder)。
例如,假设我们RecyclerView包含aHeaderViewHolder,而我们显然不想对其应用刷卡。只需getSwipeDirs按如下所示进行覆盖即可:
@Override
public int getSwipeDirs(RecyclerView recyclerView,RecyclerView.ViewHolderviewHolder) {
if (viewHolder instanceof HeaderViewHolder) {
//不滑动标题
return 0;
}
//默认滑动其他所有项目
return super.getSwipeDirs(recyclerView, viewHolder);
}
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下