¿Cómo puedo eliminar OnClickListeners de ViewHolders de RecyclerView cuando se eliminan?
Estoy usando RecyclerViews en mi proyecto de aplicación y la configuración OnClickListeners con sus ViewHolders (en sus constructores como se menciona en un StackOverflow Q & A ).
Entonces tengo esta pregunta: ¿cómo puedo quitar OnClickListeners de ViewHolders de RecyclerView cuando se eliminan.
- (Smooth) ScrollToPosition no funciona correctamente con RecyclerView
- Hacer desplazamiento de vista con un recyclerview y appbar
- Reciclado horizontal con bordes de decoloración
- Agregue RecyclerView (RecyclerFragment) a un cuadro de diálogo
- ¿Qué es el ciclo de vida del adaptador RecyclerView?
Por lo general, podemos eliminar un OnClickListener haciendo esto:
view.setOnClickListener(null);
Y si es PagerAdapter de ViewPager, podemos hacerlo en el método destroyItem
.
@Override public void destroyItem(ViewGroup container, int position, Object object) { View view = container.findViewById(R.id.viewId); view.setOnClickListener(null); }
¿Dónde puedo hacerlo con RecyclerView? – ¿ O no necesito hacerlo?
- Recycler View Con Gridlayout Manager
- Android studio: gradle error de dependencia
- Establecer contentInset en RecyclerView
- Animar transiciones de elementos compartidos usando fragmentos de Android parece ser una pesadilla
- Android RecyclerView último elemento eliminar (tiempo de ejecución) error
- ¿Debo cambiar el Listview existente en mi aplicación a RecyclerView?
- ¿Cómo agregar un simple encabezado 8dp / pie de página a RecyclerView de Android?
- Cómo hacer un indicador de página para reciclaje horizontal
Si desea anular el ajuste onclickListener () de las vistas de RecyclerView.Adapter cuando la vista se apaga de la pantalla, puede hacerlo sobrescribiendo http://developer.android.com/reference/android/support/v7/ Widget / RecyclerView.Adapter.html # onViewDetachedFromWindow (VH) en el adaptador de recyclerView. Recibirá el titular como un parámetro que acaba de salir de la pantalla. Puede null establecer onClickListener de cualquier vista disponible en ese titular.
O si sólo quiere hacer lo mismo cuando se vuelve visible en la pantalla, puede hacerlo en onBindViewHolder (). Pero esto no tiene sentido ya que en su lugar se puede evitar establecer oyentes.
Puntos a recordar, relacionados con esta respuesta:
Establecer el oyente a nulo puede ser requisito cuando no desea establecer el oyente de clics para ver para cada conjunto de datos, pero sólo a unos pocos. En este caso, siempre es mejor establecer listenrs a null como y cuando salgan de la pantalla. De lo contrario, ya que RecyclerView volverá a usar (reciclar) los objetos de soporte que se fueron a representar el nuevo conjunto de datos que se está haciendo visible. En este proceso, el conjunto de datos (vista en un soporte) en el que no se estableció el oyente puede tener el oyente establecido debido al reciclaje.
En definitiva, al obtener la ventaja de desplazamiento suave debido al reciclaje, es dev la responsabilidad de restablecer las vistas (borrar las vistas de la imagen, vistas de texto, etc.) y la configuración null el onclickListener, etc
Si está utilizando RecyclerView
y OnClickListener
a cada vista raíz de fila, no hay necesidad de disponerlas.
Pero si algunas vistas no deben responder al evento del tecleo apenas uso setOnClickListener(null)