Recyclerview de Android vs ListView con el usuario

Recientemente me encontré con el android RecycleView que fue lanzado con Android 5.0 y parece que RecycleView es sólo un tradicional encapsulado ListView con el patrón de ViewHolder incorporado en él, que promueve la reutilización de la vista, en lugar de la creación de cada vez.

¿Cuáles son los otros beneficios de usar RecycleView ? Si ambos tienen el mismo efecto en términos de rendimiento, ¿por qué elegir el uso de RecycleView?

Editar

Me pareció que la gente ha hecho preguntas similares y las respuestas no son concluyentes, agregándolos aquí para el mantenimiento de registros.

Recyclerview vs Listview

¿Deberíamos usar RecyclerView para reemplazar ListView?

¿Por qué RecyclerView no tiene onItemClickListener ()? Y ¿Cómo es RecyclerView diferente de Listview?

Con el advenimiento de Android Lollipop, el RecyclerView hizo su camino oficialmente. El RecyclerView es mucho más potente, flexible y una mejora importante sobre ListView . Intentaré darle una penetración detallada en él.

1) Patrón de ViewHolder

En un ListView, se recomendó utilizar el patrón ViewHolder pero nunca fue una compulsión. En caso de RecyclerView, esto es obligatorio usando la clase RecyclerView.ViewHolder . Esta es una de las principales diferencias entre ListView y RecyclerView.

Esto hace que las cosas sean un poco más complejas en RecyclerView, pero muchos problemas que enfrentamos en el ListView se resuelven de manera eficiente.

2) LayoutManager

Esta es otra mejora masiva traída al RecyclerView. En un ListView, el único tipo de vista disponible es el ListView vertical. No existe una forma oficial de implementar un ListView horizontal.

Ahora usando un RecyclerView, podemos tener un

I) LinearLayoutManager – que soporta listas verticales y horizontales,

Ii) StaggeredLayoutManager – que apoya Pinterest como listas escalonadas,

Iii) GridLayoutManager – que admite la visualización de cuadrículas como se ve en las aplicaciones de Galería.

Y lo mejor es que podemos hacer todo esto dinámicamente como queremos.

3) Animador del artículo

ListViews carecen de soporte de buenas animaciones, pero el RecyclerView trae una nueva dimensión. Utilizando la clase RecyclerView.ItemAnimator , animar las vistas se vuelve mucho más fácil e intuitivo.

4) Decoración del artículo

En el caso de ListViews, dinámicamente decorar elementos como agregar bordes o divisores nunca fue fácil. Pero en el caso de RecyclerView, la clase RecyclerView.ItemDecorator da un gran control a los desarrolladores, pero hace que las cosas un poco más lento y complejo.

5) OnItemTouchListener

Interceptar clics de elemento en un ListView fue simple, gracias a su interfaz AdapterView.OnItemClickListener . Pero el RecyclerView da mucho más poder y control a sus desarrolladores por el RecyclerView.OnItemTouchListener, pero complica las cosas un poco para el desarrollador.

En palabras simples, el RecyclerView es mucho más personalizable que el ListView y da mucho control y poder a sus desarrolladores.

Bueno, tan poco de excavación y encontré estas gemas de Bill Philips artículo sobre RecycleView

RecyclerView puede hacer más que ListView, pero la clase RecyclerView tiene menos responsabilidades que ListView. Fuera de la caja, RecyclerView no:

  • Colocar los elementos en la pantalla
  • Animar vistas
  • Maneje cualquier evento de toque aparte de desplazarse

Todas estas cosas se cocinaron en ListView, pero RecyclerView utiliza clases de colaborador para hacer estos trabajos en su lugar.

Los ViewHolders que creas son más robustos, también. Ellos subclase RecyclerView.ViewHolder , que tiene un montón de métodos que RecyclerView utiliza. ViewHolders sabe a qué posición están enlazados actualmente, así como qué identificadores de elemento (si los tiene). En el proceso, ViewHolder ha sido caballero. Solía ​​ser el trabajo de ListView para mantener la vista de todo el elemento, y ViewHolder sólo se mantiene en pequeños pedazos de la misma.

Ahora, ViewHolder se mantiene en todo en el campo ViewHolder.itemView , que se asigna en el constructor de ViewHolder para usted.

La otra ventaja de usar RecycleView es la animación, se puede hacer en dos líneas de código

 RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator(); recyclerView.setItemAnimator(itemAnimator); 

Pero el widget sigue en bruto, por ejemplo, no puede crear el encabezado y el pie de página .

Más del artículo de Bill Phillip (ve a leerlo), pero pensé que era importante señalar lo siguiente.

En ListView, había cierta ambigüedad acerca de cómo manejar eventos de clic: ¿Deberían las vistas individuales manejar esos eventos o debería ListView manejarlos a través de OnItemClickListener? En RecyclerView, sin embargo, el ViewHolder está en una posición clara para actuar como un objeto controlador de nivel de fila que maneja ese tipo de detalles.

Vimos anteriormente que LayoutManager manejaba las vistas de posicionamiento, y ItemAnimator trataba de animarlas. ViewHolder es la última pieza: es responsable de manejar cualquier evento que ocurra en un elemento específico que muestra RecyclerView.

Utilicé un cargador de imágenes ListView con Glide, con crecimiento de memoria. Luego reemplazé el ListView con un RecyclerView . No sólo es más difícil en la codificación, sino que también conduce a un uso de memoria más que un ListView . Al menos, en mi proyecto.

En otra actividad utilicé una lista compleja con EditText's . En algunos de ellos un método de entrada puede variar, también se puede aplicar TextWatcher . Si usé un ViewHolder , ¿cómo podría reemplazar un TextWatcher durante el desplazamiento? Por lo tanto, he utilizado un ListView sin un ViewHolder , y funciona.

  • Problemas de procesamiento: java.lang.NullPointerException en android.support.v7.widget.RecyclerView en Android Studio 1.1.0
  • Animación de RecyclerView en el clic de artículo
  • Disposición de Android: Recyclerview horizontal dentro de una Recyclerview vertical dentro de un Viewpager con comportamientos de desplazamiento
  • RecyclerView onBindViewHolder sólo se llama cuando los cambios getItemViewType
  • Cómo crear un menú contextual para RecyclerView
  • Prueba recyclerView con Espresso, cómo realizar clics o hacer afirmaciones
  • La vista de Recycler no se desplaza correctamente después de implementar el desplazamiento para actualizar el diseño.
  • RecyclerView vs. ListView
  • Android RecyclerView último elemento eliminar (tiempo de ejecución) error
  • ¿Hay alguna manera de mostrar Google Admob en Android Recycler View
  • No contraer la barra de herramientas cuando RecyclerView se ajusta a la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.