Listemde hızlıca kaydır seçeneğini etkinleştirmek için recyclerview 22.2.0 ve yardımcı sınıf ItemTouchHelper.SimpleCallback kullanıyorum . Ancak üzerinde bir tür başlığım olduğundan, adaptörün ilk konumu için kaydırma davranışını devre dışı bırakmam gerekiyor. Şöyle RecyclerView.Adapter bir bulunmamaktadır isEnabled () metodu, I yöntemler vasıtasıyla görünüşüdür etkileşimi devre dışı bırakılmış IsEnabled () ve isFocusable () ViewHolder oluşturulması kendisinde, ancak başarılı olmamıştır. SimpleCallback'in getSwipeThreshold () yönteminde kaydırma eşiğini 0f ot 1f gibi tam bir değere ayarlamaya çalıştım , ancak başarı da yok.
Bana yardım etmenize yardımcı olacak kodumun bazı parçaları.
Faaliyetim:
@Override
protected void onCreate(Bundle bundle) {
//... initialization
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
RecyclerView.ViewHolder target) {
return false;
}
@Override
public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof CartAdapter.MyViewHolder) return 1f;
return super.getSwipeThreshold(viewHolder);
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
Ve iki görünüm tipine sahip ortak bir adaptörüm var . Gelen ViewHolder ben devre dışı Kaydırma istiyorum, ben yaptım:
public static class MyViewHolder extends RecyclerView.ViewHolder {
public ViewGroup mContainer;
public MyViewHolder(View v) {
super(v);
v.setFocusable(false);
v.setEnabled(false);
mContainer = (ViewGroup) v.findViewById(R.id.container);
}
}