[英]Recyclerview swipe direction right
我想知道您是否可以使用itemtouchhelper
消除項目,僅當用戶向右滑動時才可以? 我正在使用此代碼,但方向無效
public class CrimeTouchHelper extends ItemTouchHelper.SimpleCallback {
private CrimeAdapter mMovieAdapter;
public CrimeTouchHelper(CrimeAdapter movieAdapter){
super(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
this.mMovieAdapter = movieAdapter;
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
//TODO: Not implemented here
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
//Remove item
Log.e("DIRECTION", direction + "");
if(direction == 8) {
mMovieAdapter.remove(viewHolder.getAdapterPosition());
}
}
}`
這很容易做到。 您可以使用此代碼,
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new
ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(
final RecyclerView recyclerView,
final RecyclerView.ViewHolder viewHolder,
final RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(
final RecyclerView.ViewHolder viewHolder,
final int swipeDir) {
adapter.remove(viewHolder.getAdapterPosition());
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(
simpleItemTouchCallback
);
itemTouchHelper.attachToRecyclerView(itemsRecyclerView);
您可以將ItemTouchHelper.RIGHT
傳遞為構造函數的第二個參數,該構造函數將實際采用該方向。
使用onSwipe()
方法執行您要執行的操作,例如從適配器中刪除項目。
希望這可以幫助。 如果您遇到任何問題,請告訴我。
在CrimeTouchHelper的構造函數中的super方法中進行設置。
第二個參數是滑動方向,因此只需傳遞ItemTouchHelper.RIGHT
super(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.RIGHT);
之后,您可以刪除#onSwiped中的'if'復選框
您當前在#onSwiped中簽入不會阻止刷卡。 假設8是向右滑動的int值,那么您現在要做的就是阻止適配器刪除該項目(但是該項目仍會在視覺上被擦除)。
您應該重寫getMovementFlags方法,並在customItemTouchHelper.Callback類中將滑動標志設置為ItemTouchHelper.START。
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
// Set movement flags based on the layout manager
if (recyclerView.getLayoutManager() instanceof GridLayoutManager) {
final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
final int swipeFlags = 0;
return makeMovementFlags(dragFlags, swipeFlags);
} else {
final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
final int swipeFlags = ItemTouchHelper.START;
return makeMovementFlags(dragFlags, swipeFlags);
}
}
這將阻止從左向右滑動。要向相反方向設置對ItemTouchHelper的標記。END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.