1. Ver titulares
En ListView, la definición de los titulares de vistas era un enfoque sugerido para mantener referencias para las vistas. Pero no fue una compulsión. Aunque al no hacerlo, ListView utilizó mostrar datos obsoletos. Otro inconveniente importante de no usar titulares de vistas podría llevar a una operación pesada de encontrar vistas por identificadores cada vez. Lo que resultó en ListViews laggy.
Este problema se resuelve en RecylerView mediante el uso de la clase RecyclerView.ViewHolder. Esta es una de las principales diferencias en RecyclerView y ListView. Al implementar un RecyclerView, esta clase se utiliza para definir un objeto ViewHolder que el adaptador usa para unir ViewHolder con una posición. Otro punto a tener en cuenta aquí es que, al implementar el adaptador para RecyclerView, es obligatorio proporcionar un ViewHolder. Esto hace que la implementación sea un poco compleja, pero resuelve los problemas que enfrenta ListView.
2. Layout Manager
Cuando se habla de ListViews, solo hay un tipo de ListView disponible, es decir, el ListView vertical. No puede implementar un ListView con desplazamiento horizontal. Sé que hay formas de implementar un desplazamiento horizontal, pero créanme que no fue diseñado para funcionar de esa manera.
Pero ahora, cuando miramos Android RecyclerView vs ListView, también tenemos soporte para colecciones horizontales. De hecho, es compatible con múltiples tipos de listas. Para admitir múltiples tipos de listas, utiliza la clase RecyclerView.LayoutManager. Esto es algo nuevo que ListView no tiene. RecyclerView admite tres tipos de gestores de diseño predefinidos:
LinearLayoutManager: este es el administrador de diseño más utilizado en el caso de RecyclerView. A través de esto, podemos crear listas de desplazamiento horizontal y vertical. StaggeredGridLayoutManager: a través de este administrador de diseño, podemos crear listas escalonadas. Al igual que la pantalla de Pinterest. GridLayoutManager: este administrador de diseño se puede utilizar para mostrar cuadrículas, como cualquier galería de imágenes.
3. Animador de elementos
Las animaciones en una lista son una dimensión completamente nueva, que tiene infinitas posibilidades. En un ListView, como tal, no hay disposiciones especiales a través de las cuales se pueda animar, agregar o eliminar elementos. Más tarde, a medida que Android evolucionaba, ViewPropertyAnimator fue sugerido por Chet Haase de Google en este video tutorial para animaciones en ListView.
Por otro lado, al comparar Android RecyclerView con ListView, tiene la clase RecyclerView.ItemAnimator para manejar animaciones. A través de esta clase, se pueden definir animaciones personalizadas para agregar elementos, eliminar y mover eventos. También proporciona un DefaultItemAnimator, en caso de que no necesite ninguna personalización.
4. Adaptador
Los adaptadores ListView fueron fáciles de implementar. Tenían un método principal getView donde solía ocurrir toda la magia. Donde las vistas estaban vinculadas a una posición. También solían tener un método interesante registerDataSetObserver donde se puede establecer un observador directamente en el adaptador. Esta característica también está presente en RecyclerView, pero se utiliza la clase RecyclerView.AdapterDataObserver. Pero el punto a favor de ListView es que admite tres implementaciones predeterminadas de adaptadores:
ArrayAdapter CursorAdapter SimpleCursorAdapter Mientras que el adaptador RecyclerView tiene todas las funcionalidades que tenían los adaptadores ListView, excepto el soporte incorporado para cursores DB y ArrayLists. En RecyclerView.Adapter a partir de ahora tenemos que hacer una implementación personalizada para suministrar datos al adaptador. Al igual que lo hace un BaseAdapter para ListViews. Aunque si desea obtener más información sobre la implementación del adaptador RecyclerView, consulte el ejemplo de Android RecyclerView.
5. Notificación de cambio en los datos
Al trabajar con un ListView, si se cambia el conjunto de datos, debe llamar al método notifyDataSetChanged del adaptador subyacente para actualizar los datos. O establezca el método setNotifyOnChange en verdadero en caso de que desee llamar al método notifyDataSetChanged automáticamente. Pero en ambos casos, el resultado es muy pesado en la lista. Básicamente actualiza las vistas de la lista.
Pero, por el contrario, en un adaptador RecyclerView, si un solo elemento o una variedad de elementos han cambiado, existen métodos para notificar el cambio en consecuencia. Esos son notifyItemChanged y notifyItemRangeChanged respectivamente y muchos más como:
notifyItemInsterted notifyItemMoved notifyItemRangeInsterted notifyItemRangeRemoved Y, por supuesto, tiene el método original para actualizar toda la lista, es decir, notifyDataSetChanged que notifica la adaptación de todo el conjunto de datos ha cambiado.
6. Decoración del artículo
Para mostrar divisores personalizados en un ListView, uno podría haber agregado fácilmente estos parámetros en el XML de ListView:
XHTML android: divider = "@ android: color / transparent" android: dividerHeight = "5dp" 1 2 android: divider = "@ android: color / transparent" android: dividerHeight = "5dp" La parte interesante de Android RecyclerView es que, a partir de ahora no muestra un divisor entre elementos de forma predeterminada. Aunque los chicos de Google deben haber dejado esto fuera para la personalización, intencionalmente. Pero esto aumenta enormemente el esfuerzo para un desarrollador. Si desea agregar un divisor entre elementos, es posible que deba realizar una implementación personalizada utilizando la clase RecyclerView.ItemDecoration.
O puede aplicar un hack usando este archivo de muestras oficiales: DividerItemDecoration.java
7. OnItemTouchListener
Las vistas de lista solían tener una implementación simple para la detección de clics, es decir, mediante el uso de la interfaz AdapterView.OnItemClickListener.
Pero, por otro lado, la interfaz RecyclerView.OnItemTouchListener se utiliza para detectar eventos táctiles en Android RecyclerView. Complica un poco la implementación, pero le da un mayor control al desarrollador para interceptar eventos táctiles. La documentación oficial indica que puede ser útil para manipulaciones gestuales, ya que intercepta un evento táctil antes de que se entregue a RecyclerView.
RecyclerView
es mucho más rápido y más versátil con una API mucho mejor. Cosas como animar la adición o eliminación de elementos ya se implementanRecyclerView
sin que tenga que hacer nada. No hay duda al respecto, tira tuListView
basura a la basura,RecyclerView
está aquí para robar el espectáculo.