2016-02-11 6 views
11

私は動作中のItemTouchHelperを持つRecyclerViewを持っています。すべてがうまくいきますが、リストを再作成せずにRecyclerViewからItemTouchHelperを切り離す方法があるかどうかは疑問です。楽しみのために、これは私が添付するために使用しているコードです:RecyclerViewからItemTouchHelperをデタッチ

ItemTouchHelper.Callback callback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) 
{ 
    ... 
}; 
mItemTouchHelper = new ItemTouchHelper(callback); 
mItemTouchHelper.attachToRecyclerView(mPasswordList); 

理想的には、私はこのRecyclerViewがに住んでいる活動のonResume()発言で好みをチェックし、それに基づいてItemTouchHelperを切り離したいと思います。

答えて

11

私の当初の動機は、ユーザーが選択した場合に、リストアイテムに対するスワイプアクションを無効にできるようにすることでした。これを行う方法は、RecyclerViewからItemTouchHelperを切り離すことでした。

@Override 
public boolean isItemViewSwipeEnabled() 
{ 
    return mSwipable; 
} 

ので、効果的にここに正しい状態を返すことはスワイプ処理をオフにします。私は今ItemTouchHelper.SimpleCallbackを上書きするために利用できる次のような方法があります発見しました。私はこれが将来誰かを助けることを願っています。

+3

あなたは私の一日(..or私の週)に保存します。ありがとうございました! –

+0

完璧なソリューション! –

12

あなたはnullにrecyclerviewを設定することにより、RecyclerViewからItemTouchHelperを切り離すことができます。

mItemTouchHelper.attachToRecyclerView(null); 
+0

素敵なトリックです。しかし、この制限に注意してください:https://issuetracker.google.com/issues/37092256 Googleは彼らがバグを修正すると主張します。しかし、このコメントが書かれている時点では、修正は公開されていません。 –

関連する問題