मैं अपनी सूची में स्वाइप-टू-खारिज विकल्प को सक्षम करने के लिए recyclerview 22.2.0 और सहायक वर्ग ItemTouchHelper.SimpleCallback का उपयोग कर रहा हूं। लेकिन जैसा कि मेरे पास इस पर एक प्रकार का हेडर है, मुझे एडेप्टर की पहली स्थिति के लिए स्वाइप व्यवहार को अक्षम करना होगा। के रूप में RecyclerView.Adapter एक नहीं है IsEnabled () विधि, मैं तरीकों के माध्यम से दृश्य बातचीत को निष्क्रिय करने की कोशिश की IsEnabled () और isFocusable () ViewHolder निर्माण अपने आप में है, लेकिन कोई सफलता मिली। मैंने कड़ी चोट की सीमा को पूर्ण मान में समायोजित करने की कोशिश की, जैसे कि SimpleCallback की विधि getSwipeThreshold () में 0f ot 1f , लेकिन कोई सफलता भी नहीं।
मेरी मदद करने के लिए मेरे कोड के कुछ टुकड़े।
मेरी गतिविधि:
@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);
}
और मेरे पास दो दृश्य प्रकारों के साथ एक सामान्य एडाप्टर है । में ViewHolder कि मैं अक्षम स्वाइप करना चाहते हैं, मैंने किया था:
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);
}
}