2017-01-05 9 views
0

にRecyclerViewにスワイプ左または右防ぐ方法:私は右の強打を許可し、左スワイプを防ぎたい私はシンプルRecyclerViewを作成していると私はスワイプリスナーの下に使用していますアンドロイド

//swipe items 
      new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) { 

       @Override 
       public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { 
        //do nothing, we only care about swiping 
        return false; 
       } 

       @Override 
       public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) { 
        if(swipeDir == ItemTouchHelper.RIGHT){ 
         Toast.makeText(getContext(), "Swiped right", Toast.LENGTH_SHORT).show(); 
        }else{ 
         Toast.makeText(getContext(), "Swiped left", Toast.LENGTH_SHORT).show(); 
        } 

       } 
      }).attachToRecyclerView(recyclerView); 

。だからユーザーが左にスワイプしようとすると、アイテムが消えないようにしたい。

どうすればいいですか?例えば

+2

'ItemTouchHelper.LEFT'を' new ItemTouchHelper.SimpleCallback(0、ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) 'から削除しようとしましたか?それは 'new ItemTouchHelper.SimpleCallback(0、ItemTouchHelper.RIGHT)' – SteveEdson

+0

です。http://stackoverflow.com/questions/30713121/disable-swipe-for-position-in-recyclerview-using-itemtouchhelper-simplecallback –

答えて

3

あなたはItemTouchHelper.CallbackItemTouchHelper.SimpleCallbackのスーパークラス)の方法@Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)をオーバーライドする必要がある唯一のいくつかのスワイプ/ドラッグの動きを有効にする場合

だけ右スワイプを有効にする場合:

@Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { 
    int dragFlags = 0; 
    int swipeFlags = ItemTouchHelper.RIGHT; 

    return makeMovementFlags(dragFlags, swipeFlags); 
} 
関連する問題