2016-02-11 16 views
11

Çalışan bir ItemTouchHelper ile bir RecyclerView var. Her şey harika çalışıyor, ama Listeyi yeniden oluşturmadan ItemTouchHelper'ı RecyclerView'den ayırabilmenin bir yolu olup olmadığını merak ediyorum.Öğe Ayrıntısı ÖğeTıklamaHelper from RecyclerView

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

İdeal olarak, ben diyelim ki bu RecyclerView yaşıyor Faaliyet onResume() bir tercihi kontrol ve buna dayanarak ItemTouchHelper ayırmak istiyorum: Eğlence için, bu şimdiye takmak için kullanıyorum kodudur.

cevap

11

Bunun için yaptığım ilk motivasyon, kullanıcının seçtikleri takdirde liste öğeleri üzerinde hızlıca kaydırma eylemlerini devre dışı bırakabilmesidir. Bunu yapmanın yolu, RecyclerView'dan ItemTouchHelper'u ayırmaktı.

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

Yani, etkili bir şekilde burada doğru durumunu dönen tokatlamak işlemeyi kapatır: Şimdi ItemTouchHelper.SimpleCallback geçersiz kılmak için kullanılabilir aşağıdaki yöntemi vardır bulduk. Umarım bu gelecekte birisine yardım eder.

+3

Günümü (..ya benim hafta) kaydedin. Teşekkür ederim! –

+0

Mükemmel çözüm! –

12

Sen null recyclerview ayarlayarak RecyclerView gelen ItemTouchHelper ayırabilirisiniz:

mItemTouchHelper.attachToRecyclerView(null); 
+0

Güzel numara. Ancak, bu sınırlamaya dikkat edin: https://issuetracker.google.com/issues/37092256 Google, hatayı düzelttiklerini iddia ediyor. Ancak, bu yorumun yazıldığı tarihte, düzeltme henüz kamuya açıklanmadı. –