Estoy usando recyclerview 22.2.0 y la clase auxiliar ItemTouchHelper.SimpleCallback para habilitar la opción de deslizar para descartar en mi lista. Pero como tengo un tipo de encabezado, necesito desactivar el comportamiento de deslizamiento para la primera posición del adaptador. Como RecyclerView.Adapter no tiene un método isEnabled () , intenté deshabilitar la interacción de la vista a través de los métodos isEnabled () e isFocusable () en la creación de ViewHolder, pero no tuve éxito. Intenté ajustar el umbral de deslizamiento a un valor completo, como 0f ot 1f en el método getSwipeThreshold () de SimpleCallback , pero tampoco tuve éxito.
Algunos fragmentos de mi código para ayudarte a ayudarme.
Mi actividad:
@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);
}
Y tengo un adaptador común con dos tipos de vista. En el ViewHolder que quiero deshabilitar el deslizamiento, lo hice:
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);
}
}