¿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.

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?

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)

  • Agregar dinámicamente vistas a un recycleview.viewholder
  • Biblioteca avanzada de RecyclerView - ejemplos de código
  • Elemento RecyclerView que no muestra ondulaciones / retroalimentación táctil cuando el elemento tiene una casilla de verificación
  • Adición de elementos al reciclado sin fin con RecyclerView con un reciclado ReverseLayout
  • Cómo agregar un scroller rápido al RecyclerView
  • ¿Existe una mejor manera de obtener una referencia a la RecyclerView padre desde el adaptador?
  • Android ViewPager con RecyclerView funciona incorrectamente dentro de BottomSheet
  • Descripción de RecyclerView setHasFixedSize
  • Error: no se puede encontrar la clase de símbolo RecyclerView
  • Problemas con la implementación del modo de acción contextual en fragmento recyclerview
  • Detener el desplazamiento del usuario para establecer la posición en RecyclerView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.