Del desarrollador de Android ( Creación de listas y tarjetas ):
El widget RecyclerView es una versión más avanzada y flexible de ListView.
De acuerdo, suena genial, pero cuando vi esta imagen de ejemplo, me confundí mucho sobre la diferencia entre estos dos.
La imagen de arriba se puede crear fácilmente ListView
utilizando un adaptador personalizado.
Entonces, ¿en qué situación se debe usar RecyclerView
?
android
listview
android-recyclerview
Blaze Tama
fuente
fuente
Respuestas:
RecyclerView
fue creado como unaListView
mejora, así que sí, puede crear una lista adjunta conListView
control, pero usarloRecyclerView
es más fácil ya que:Reutiliza las celdas mientras se desplaza hacia arriba / abajo : esto es posible con la implementación de View Holder en el
ListView
adaptador, pero era algo opcional, mientrasRecycleView
que es la forma predeterminada de escribir el adaptador.Desacopla la lista de su contenedor , por lo que puede colocar elementos de la lista fácilmente en tiempo de ejecución en los diferentes contenedores (linearLayout, gridLayout) con la configuración
LayoutManager
.Ejemplo:
ItemAnimator
.Hay más sobre
RecyclerView
, pero creo que estos puntos son los principales.Entonces, para concluir,
RecyclerView
es un control más flexible para el manejo de "datos de lista" que sigue patrones de delegación de preocupaciones y deja para sí solo una tarea: reciclar artículos.fuente
Para que las vistas de lista tengan un buen rendimiento, deberá implementar el patrón de soporte, y eso es fácil de estropear, especialmente cuando desea llenar la lista con varios tipos diferentes de vistas.
El RecyclerView incorpora este patrón, lo que hace que sea más difícil cometer errores. También es más flexible, lo que facilita el manejo de diferentes diseños, que no son lineales, como una cuadrícula.
fuente
ListView
es el antepasado deRecyclerView
. Hubo muchas cosas queListView
no hicieron o no hicieron bien. Si tuviera que reunir las deficienciasListView
y resolver el problema abstrayendo los problemas en diferentes dominios, terminaría con algo así como la vista del reciclador. Estos son los principales puntos problemáticos con ListViews:No impuso la
View
Reutilización para los mismos tipos de elementos (observe uno de los adaptadores que se utilizan en unListView
, si estudia el método getView verá que nada impide que un programador cree una nueva vista para cada fila, incluso si se pasa uno a través de laconvertView
variable)No impidió
findViewById
usos costosos (incluso si reciclaba las vistas como se indicó anteriormente, era posible que los desarrolladores llamaranfindViewById
para actualizar los contenidos mostrados de las vistas secundarias. El propósito principal delViewHolder
patrónListViews
era almacenar en caché lasfindViewById
llamadas. Sin embargo, esto era solo disponible si lo sabías, ya que no era parte de la plataforma)Solo admite el desplazamiento vertical con vistas visualizadas en fila (la vista del reciclador no le importa dónde se colocan las vistas y cómo se mueven, se abstrae en una
LayoutManager
. Por lo tanto, un reciclador puede admitir lo tradicionalListView
como se muestra arriba, así como cosas como elGridView
, pero no se limita a eso, puede hacer más, pero debe hacer el trabajo de programación para que esto suceda).Las animaciones para agregar / eliminar no fueron un caso de uso que se consideró. Depende completamente de usted averiguar cómo hacer esto (compare RecyclerView. Las clases de adaptadores notifican * las ofertas de métodos v. ListViews para tener una idea).
En resumen,
RecyclerView
es una versión más flexibleListView
, aunque es posible que deba hacerse más codificación de su parte.fuente
Respuesta tomada de Antonio leiva
RecyclerView
es de hecho unpowerful view
queListView
. Para más detalles puede visitar esta página .fuente
Los siguientes son algunos puntos clave / diferencias entre RecyclerView y ListView. Toma tu llamada sabiamente.
fuente
Gran ventaja:
ViewHolder
no está disponible por defecto enListView
. Vamos a crear explícitamente dentro delgetView()
.RecyclerView
Tiene incorporadoViewholder
.fuente
Además de las diferencias anteriores, hay algunas más:
RV separa la creación de la vista y el enlace de datos a la vista. En LV, debe verificar si convertView es nulo o no para crear la vista, antes de vincular los datos. Por lo tanto, en el caso de RV, la vista se creará solo cuando sea necesario, pero en el caso de LV, uno puede pasar por alto la verificación de convertview y creará una vista cada vez.
Cambiar entre Grid y List es más fácil ahora con LayoutManager.
No es necesario notificar y actualizar todos los elementos, incluso si solo se cambia un elemento.
Había que implementar el almacenamiento en caché de vistas en caso de LV. Se proporciona en RV por defecto. (Hay una diferencia entre el almacenamiento en caché de vista y el reciclaje).
Animaciones de elementos muy fáciles en caso de RV.
fuente
Ventajas de RecyclerView sobre listview:
Contiene ViewHolder de forma predeterminada.
Animaciones fáciles
Admite diseños horizontales, de cuadrícula y escalonados
Ventajas de listView sobre recyclerView:
Divisor fácil de agregar.
Puede usar el adaptador incorporado de matriz para listas simples
Soporta encabezado y pie de página.
Soporta OnItemClickListner.
fuente
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
recyclerView = view.findViewById(R.id.feed);
8 diferencias entre RecyclerView y ListView
1. Patrón ViewHolder
El patrón utilizado para reducir las llamadas a los métodos findViewById () .
En ListView, puede crear fácilmente una lista sin usar ViewHolder. Pero no en el caso de RecyclerView.
2. Adaptador
Ambos son AdaptViews, sí. Funciona según la clase de adaptador.
Es fácil construir ListView usando adaptadores predeterminados como ArrayAdapter, CursorAdapter pero RecyclerView proporciona la clase RecyclerView.Adapter, para crear una nueva clase de adaptador personalizado.
No puede usar ArrayAdapter ni ningún otro adaptador incorporado con RecyclerView.
3. Arreglo de artículos
He creado Vertical ListView en código simple y menos. Pero, ¿qué pasa si necesitamos crear un GridView?
RecyclerView utiliza LayoutManager para organizar sus elementos. Hay 3 clases de LayoutManager.
Animaciones
ListView carece de animaciones básicas. Pero RecyclerView viene con animaciones simples.
Divisor
El androide: divisor y android: dividerHeight atributos o setDivider (), setDividerHeight () te ayudan a crear un divisor personalizado en ListView.
desde 25.1.0, puede usar la clase DividerItemDecoration para hacer un divisor simple.
Haga clic en eventos
RecyclerView carece de OnItemClickListener , sí, eso es muy triste. Pero le dan más control al desarrollador al proporcionar RecyclerView.OnItemTouchListener.
Métodos de notificación
Debe llamar a los métodos de notificación * apropiados para realizar animaciones correctas. RecylcerView tiene muchos métodos de notificación * cuando se compara con ListView.
fuente
Creo que la diferencia principal y más grande que tienen es que
ListView
busca la posición del elemento al crearlo o colocarlo, por otro lado,RecyclerView
busca el tipo de elemento. si hay otro elemento creado con el mismo tipo,RecyclerView
no lo crea nuevamente. Pide el primer adaptador y luego pide reciclado, si el grupo reciclado dice "sí, he creado un tipo similar", entoncesRecyclerView
no intenta crear el mismo tipo.ListView
no tiene este tipo de mecanismo de agrupación.fuente
En mi opinión,
RecyclerView
se hizo para abordar el problema con el patrón de reciclaje utilizado en las vistas de lista porque estaba dificultando la vida del desarrollador. Todo lo demás que puedas manejar más o menos. Por ejemplo, yo uso el mismo adaptador paraListView
yGridView
no importa en ambos puntos de vista de losgetView
,getItemCount
,getTypeCount
se utiliza lo que es lo mismo.RecyclerView
no es necesario siListView
conListAdapter
oGridView
con adaptadores de red ya está funcionando para usted. Si ha implementado correctamente elViewHolder
patrón en sus vistas de lista, entonces no verá ninguna mejora importanteRecycleView
.fuente
Trabajé un poco con
RecyclerView
y todavía prefieroListView
.Claro, ambos usan
ViewHolders
, así que esto no es una ventaja.A
RecyclerView
es más difícil en la codificación.A
RecyclerView
no contiene un encabezado y pie de página, por lo que es un signo menos.A
ListView
no requiere hacer un ViewHolder. En los casos en que desee tener una lista con secciones o subtítulos, sería una buena idea hacer elementos independientes (sin ViewHolder), es más fácil y no requiere clases separadas.fuente
Entonces, si la eficiencia es su preocupación, entonces sí, es una buena idea reemplazar un ListView con un RecyclerView.
fuente
Respuesta simple: debe usar RecyclerView en una situación en la que desea mostrar muchos elementos, y el número de ellos es dinámico. ListView solo debe usarse cuando el número de elementos es siempre el mismo y está limitado al tamaño de la pantalla.
Le resulta más difícil porque está pensando solo con la biblioteca de Android en mente.
Hoy en día, existen muchas opciones que lo ayudan a construir sus propios adaptadores, lo que facilita la creación de listas y cuadrículas de elementos dinámicos que puede elegir, reordenar, usar animación, divisores, agregar pies de página, encabezados, etc.
No se asuste y pruebe RecyclerView, puede comenzar a amarlo haciendo una lista de 100 elementos descargados de la web (como noticias de Facebook) en ListView y RecyclerView, verá la diferencia en la UX (usuario experiencia) cuando intentas desplazarte, probablemente la aplicación de prueba se detendrá antes de que puedas hacerlo.
Le recomiendo que revise estas dos bibliotecas para hacer adaptadores fáciles:
FastAdapter por mikepenz
FlexibleAdapter por davideas
fuente
RecyclerVer información
El
RecyclerView
fue introducido conAndroid 5.0 (Lollipop)
. está incluido en la Biblioteca de soporte . Por lo tanto, es compatible con Android API Level 7.De manera similar a la idea principal
ListView
,RecyclerView’s
es proporcionar la funcionalidad de listado de una manera amigable con el rendimiento. La parte 'Recycler' del nombre de esta vista no está ahí por coincidencia. EnRecyclerView
realidad, puede reciclar los elementos con los que está trabajando actualmente. El proceso de reciclaje se realiza gracias a un patrón llamado View Holder .Pros y contras de RecyclerView
Pros:
Contras:
Información de ListView
El
ListView
ha existido desde el comienzo de Android. Estaba disponible incluso enAPI Level 1
y tiene el mismo propósito que elRecyclerView
.El uso de ListView es realmente muy simple. En este aspecto, no es como su sucesor. La curva de aprendizaje es más suave que la de RecyclerView. Por lo tanto, es más fácil de entender. No tenemos que lidiar con cosas como LayoutManager, ItemAnimator o DiffUtil.
Pros y contras de ListView
Pros:
ExpandableListView
Contras:
fuente
Existen muchas diferencias entre ListView y RecyclerView, pero debe tener en cuenta lo siguiente en particular:
fuente