De desarrollador de android (Crear Listas y Tarjetas):

La RecyclerView widget es una de las más avanzadas y flexibles versión de
ListView.

Bien, suena bien, pero cuando vi esta imagen de ejemplo, me sentí muy confundido acerca de la diferencia entre estos dos.

RecyclerView vs ListView

La imagen de arriba pueden ser fácilmente creados por ListView mediante adaptador personalizado.

Así, en qué situación se debe recurrir a las RecyclerView?

InformationsquelleAutor Blaze Tama | 2014-11-04

14 Comentarios

  1. 348

    RecyclerView fue creado como un ListView de mejora, así que sí, puede crear una lista adjunta con ListView de control, pero el uso de RecyclerView es más fácil ya que:

    1. Reutiliza células, mientras que el desplazamiento hacia arriba/abajo – esto es posible con la implementación de Vista de Titular en el ListView adaptador, pero era una cosa opcional, mientras que en el RecycleView es la forma por defecto de la escritura adaptador.

    2. Desacopla la lista de su contenedor – así que usted puede poner los elementos de la lista fácilmente en tiempo de ejecución en los distintos contenedores (linearLayout, gridLayout) con la configuración de LayoutManager.

    Ejemplo:

    mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    //or
    mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
    1. Anima común lista de acciones – Animaciones están desacopladas y delegadas a ItemAnimator.

    Hay más acerca de RecyclerView, pero creo que estos puntos son los principales.

    Así, para concluir, RecyclerView es más flexible de control para el manejo de la «lista de datos» que sigue los patrones de la delegación de preocupaciones y hojas para sí mismo sólo una tarea de reciclaje de elementos.

    • ¿Puede por favor explicar el segundo punto?
    • Las principales responsabilidades de la vista de lista es 1.) la organización visual de los elementos dentro de una zona determinada y, preferentemente, 2.) la reutilización de objetos. Con RecylerView de esta forma se rompe en una sola responsabilidades – papelera de vista recicla y se da LayoutManager organiza los elementos en la pantalla. En otras palabras papelera de vista no sabe/cuidado de dónde poner los elementos en pantalla, sólo se ocupa de reciclaje. A partir de android doc: «al cambiar el LayoutManager un RecyclerView puede ser usado para implementar un estándar de desplazamiento vertical de la lista, un uniforme de la cuadrícula, se tambaleó cuadrículas, tener que desplazarse horizontalmente colecciones y más. «
    • «La reutilización de las células, mientras que el desplazamiento hacia arriba/abajo» : Ya sé que esto es completamente erróneo, Porque esto ocurre incluso en la vista de lista sin viewholder.
    • El principal uso de la vista de titular en la vista de lista es el código podría llamar findViewById() con frecuencia durante el desplazamiento de ListView, lo que puede ralentizar el rendimiento. Incluso cuando el Adaptador devuelve una perspectiva exagerada para el reciclaje, todavía es necesario buscar los elementos y actualización de los mismos. Una forma de evitar el uso repetido de findViewById() es el uso de la vista «titular» patrón de diseño. Un ViewHolder objeto almacena cada uno de los componente de puntos de vista dentro de la etiqueta del campo del Diseño, por lo que inmediatamente puede acceder a ellos sin la necesidad de mirar hacia arriba repetidamente.
    • Lo que trato de decir es la Fila serán reciclados incluso cuando se implemente el listview sin ver el titular. Que es la propiedad y la ventaja de listview. Que es lo que crea listview.
    • ellos no hicieron nada especial, estas características pueden ser añadidos por nadie. puede ampliar ListView y baseAdapter y agregar cualquier característica a él si quiere. no, de hecho no hay diferencia entre estos dos.

  2. 36

    Para las vistas de lista para tener un buen desempeño deberá implementar el titular del patrón, y que es fácil echar a perder, especialmente cuando se desea rellenar la lista con diferentes tipos de vistas.

    La RecyclerView hornea este patrón, por lo que es más difícil para un lío. También es más flexible, lo que es más fácil para manejar diferentes diseños, que no están lineal recta, como una cuadrícula.

    • Sí ! debería haber más debates en cuando NO para usar recyclerview demasiado. Si sus filas han dinámica de contenido de agregado basado en el modelo de datos y el uso de reciclado de vista, BOOM.
    • Usted debe ser capaz de añadir contenido dinámico basado en el modelo de datos. Usted sólo tendrá que configurar los diferentes puntos de vista para cualquier tipo de contenido que desea apoyar.
  3. 34

    ListView es el antepasado de RecyclerView. Había muchas cosas que ListView o no hacer, o no hacer bien. Si se reúnen las deficiencias de la ListView y resuelto el problema mediante la abstracción de los problemas en los diferentes dominios que iba a terminar con algo como el reciclador de vista. Aquí está el principal problema de los puntos con ListViews:

    • No cumplir View Reutilización para los mismos tipos de elementos (vistazo a uno de los adaptadores que se utilizan en un ListView, si vas a estudiar el método getView verá que nada impide que un programador de crear una nueva vista para cada fila, incluso si uno se pasa a través de la convertView variable)

    • No a evitar costosos findViewById utiliza(Incluso si se han reciclado vistas como se señaló anteriormente era posible para los desarrolladores de estar llamando findViewById para actualizar el contenido visualizado de niño vistas. El propósito principal de la ViewHolder patrón en ListViews fue la caché de la findViewById llamadas. Sin embargo, esto fue sólo disponible si usted lo sabía ya que no era parte de la plataforma a todos)

    • Sólo se admite el Desplazamiento Vertical con la Fila se muestran Vistas (Reciclador de vista no se preocupa de donde las vistas son colocados y cómo se mueven, se abstrae en un LayoutManager. Un Reciclador puede, por tanto, de apoyo a la tradicional ListView como se muestra arriba, así como cosas como la GridView, pero no está limitada a eso, se puede hacer más, pero usted tiene que hacer la programación de los trabajos de pie para hacer que esto suceda).

    • Animaciones añadido/quitado no fue un caso de uso que se consideró. Fue totalmente hasta usted para averiguar cómo ir sobre esto (comparar la RecyclerView. Adaptador de clases notificar* método ofertas de v. ListViews para tener una idea).

    En corto RecyclerView es más flexible tomar en el ListView, aunque más de la codificación puede necesitar ser hecho por su parte.

  4. 20

    La RecyclerView es un nuevo ViewGroup que está dispuesto a hacer cualquier
    adaptador de vista basado en una manera similar. Se supone para ser la
    sucesor de ListView and GridView, y se puede encontrar en el
    latest support-v7 version. El RecyclerView ha sido desarrollado
    con extensibilidad en mente, así que es posible crear cualquier tipo de
    el diseño que se te ocurra, pero no sin un poco de dolor-en-el-culo
    dosis.

    Respuesta tomado de Antonio leiva

     compile 'com.android.support:recyclerview-v7:27.0.0'

    RecyclerView es de hecho un powerful view de ListView .
    Para más detalles se puede visitar Esta página.

    • Me gusta esta frase de su respuesta: Esto es Android, así que las cosas nunca son fáciles Esto es cierto por lo que el Android de desarrollo de aplicaciones se ha ido, pero creo que es algo equivocado en la forma en que se diseñó la API, así como los patrones para construir app de Android. En teoría, un buen diseño debe ocultar todas las posibles complejidades de los programadores (pero todavía se accessisble para las más avanzadas), lo que comúnmente la atención es la lógica de negocio, datos y otros algoritmos de otros que los que luchan con el manejo de problemas relacionados con la interfaz de usuario (y más tedioso de los problemas que se encuentran actualmente en desarrollo de Android).
  5. 17

    Siguientes son algunos puntos clave/diferencias entre RecyclerView & ListView. Tomar su llamada sabiamente.

    Si ListView que funciona para usted, no hay ninguna razón para migrar. Si usted está
    la escritura de una nueva interfaz de usuario, usted puede ser mejor con RecyclerView.

    RecylerView ha incorporado ViewHolder, no es necesario implementar nuestros propios
    como en el listView. Se apoyo a notificar al particular índice de

    Cosas como la animación de la adición o eliminación de elementos ya están
    implementado en el RecyclerView sin tener que hacer nada

    Podemos asociar un gestor de diseño con un RecyclerView, esto puede ser
    se utiliza para la obtención aleatoria de puntos de vista en recycleview mientras que esta fue la limitación
    en la vista de lista En un ListView, el único tipo de vista es el
    vertical ListView. No hay forma oficial de implementar un
    horizontal ListView. Ahora, utilizando un RecyclerView, podemos tener un

    i) LinearLayoutManager – que apoya tanto en vertical como en horizontal
    listas, ii) StaggeredLayoutManager – que apoya a Pinterest como
    escalonados listas, iii) GridLayoutManager – que soporta la visualización de
    las rejillas como se ve en la Galería de aplicaciones.

    Y lo mejor es que podemos hacer todos estos dinámicamente como queremos.

  6. 14

    Gran ventaja :

    ViewHolder no está disponible por defecto en ListView. Vamos a crear de forma explícita dentro de la getView().
    RecyclerView ha incorporado Viewholder.

  7. 4

    Ventajas de RecyclerView más de listview :

    1. Contiene ViewHolder por defecto.

    2. Fácil animaciones.

    3. Apoya horizontal de la cuadrícula y el escalonamiento de los diseños de

    Ventajas de listView más de recyclerView :

    1. Fácil agregar divisor.

    2. Puede utilizar incorporada arrayAdapter por la simple y sencilla de las listas de

    3. Apoya Encabezado y pie de página .

    4. Apoya OnItemClickListner .

    • Como tengo entendido que usted puede agregar fácilmente un divisor de a un recyclerView utilizando recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL)); después de hacer algo como recyclerView = view.findViewById(R.id.feed);
    • Para la vista de lista puede agregar divisor,ajustar su altura y cambia su color, todo en xml auto . También actual de implementación para el divisor está bien , fue una pesadilla para agregar divisor para recyclerview anteriormente , acaba de comprobar esta respuesta para ver cómo anteriores la aplicación para el divisor era stackoverflow.com/a/27037230/6478047
  8. 3

    Yo creo que el principal y más grande diferencia que tienen es que ListView busca la posición del elemento, mientras que la creación o puesta, por otro lado RecyclerView busca el tipo de elemento. si hay otro elemento creado con el mismo tipo de RecyclerView no lo crea de nuevo. Se pregunta primero adaptador y, a continuación, pide a recycledpool, si reciclado de la piscina, dice «sí, yo he creado un tipo similar», a continuación, RecyclerView no intenta crear el mismo tipo. ListView no tiene este tipo de mecanismo de agrupación.

  9. 3

    Además de las mencionadas diferencias siguientes son algunos más:

    1. RV separa de vista de la creación y unión de datos a la vista.
      En LV, usted necesita para comprobar si convertView es nulo o no para la creación de la vista, antes de enlace de datos.
      Así, en el caso de la RV, la vista se crea sólo cuando es necesario, pero en caso de LV, uno puede perder la marca de verificación para convertview y creará la vista cada vez.

    2. De conmutación entre la Rejilla y la Lista es más fácil ahora con LayoutManager.

    3. No hay necesidad de notificar y actualización de todos los elementos, incluso si sólo un elemento cambia.

    4. Uno tenía que ver implementar el almacenamiento en caché en caso de LV.
      En RV de forma predeterminada. (No hay diferencia entre ver la caché de n de reciclaje.)

    5. Muy fácil elemento de animaciones en el caso de la RV.

  10. 2

    En mi opinión, RecyclerView se hizo para solucionar el problema con la papelera de patrón que se usa en listviews porque estaba haciendo desarrollador de la vida más difícil.
    Todos los demás que usted podría manejar más o menos.
    Por ejemplo yo uso el mismo adaptador para ListView y GridView no importa en ambas vistas de la getView, getItemCount, getTypeCount se utiliza para que es el mismo.
    RecyclerView no es necesario si ListView con ListAdapter o GridView con cuadrícula adaptadores ya está trabajando para usted.
    Si se han aplicado correctamente los ViewHolder patrón en su listviews, a continuación, usted no verá ninguna gran mejora con respecto a RecycleView.

  11. 2

    He trabajado un poco con RecyclerView y todavía prefieren ListView.

    1. Seguro, tanto de ellos utilizan ViewHolders, así que esto no es una ventaja.

    2. Un RecyclerView es más difícil en la codificación.

    3. Un RecyclerView no contiene un encabezado y pie de página, por lo que es un signo de menos.

    4. Un ListView no es necesario hacer un ViewHolder. En los casos donde usted desea tener una lista con las secciones o subheaders que sería una buena idea hacer independiente de los elementos (sin ViewHolder), es más fácil y no requiere de diferentes clases.

    • usted puede hacer encabezado y el contenido de lado en recyclerview adaptador y será más flexible que el listview. sólo con la fuerza para cambiar ur mente listview para recyclerview pero si usted puede hacer esto,usted va a entender lo que quiero decir.listview en desuso acaba de ir a tratar de aprender recyclerview goodluck
    • He utilizado tanto. ListView es aún ampliamente utilizado y no es obsoleto. También se gasta menos memoria que RecyclerView. Si desea reemplazar un ListView con RecyclerView, no será una buena idea.
    • acabo de comprobar por qué estos chicos desarrollado recyclerview para? la mejora de listview, ¿verdad? hay muchas viejas librerías y aplicaciones en google play, por lo que están a la derecha listview es aún ampliamente utilizado.acaba de salir de las cosas viejas en el pasado. verificación de las comparaciones -> link
    • gracias. Tienes razón, RecyclerView tiene algunas ventajas. Mi respuesta fue acerca de las tareas habituales en donde un ListView a veces es más fácil que un RecyclerView. Por supuesto, la animación y algunas otras mejoras son de difícil o no es posible en un ListView.
    • He añadido algunos aspectos de ese tema, consulte stackoverflow.com/a/39721769/2914140.
  12. 1
    1. Puede utilizar una interfaz para proporcionar un clic en el oyente. Yo uso este
      técnica con ListViews, demasiado.
    2. Ningún divisor: Simplemente añadir en su fila de una Vista con un ancho de
      match_parent y una altura de 1dp y darle un color de fondo.
    3. Simplemente utilizar un StateList selector para la línea de fondo.
    4. addHeaderView puede ser evitado en ListViews, demasiado: basta con poner el
      Encabezado fuera de la Vista.

    Por lo tanto, si la eficiencia es el problema, entonces sí, es una buena idea para reemplazar un ListView con un RecyclerView.

  13. 0

    Respuesta es Simple: Usted debe utilizar RecyclerView en una situación en la que quieren mostrar una gran cantidad de elementos y el número de ellos es dinámico. ListView sólo debe ser utilizado cuando el número de elementos es siempre el mismo, y está limitada al tamaño de la pantalla.

    Te resulta más difícil, ya que están pensando con el Android de la biblioteca en la mente.

    Hoy en día existe una gran cantidad de opciones que le ayudarán a crear sus propios adaptadores, por lo que es fácil para construir listas y las redes de la dinámica de los elementos que se pueden elegir, cambiar el orden, el uso de la animación, divisores, añadir pies de página, encabezados, etc, etc.

    No tener miedo y darle una oportunidad a RecyclerView, usted puede comenzar a amar es hacer una lista de 100 artículos descargados de la web (como facebook noticias) en un ListView y un RecyclerView, usted verá la diferencia en la UX (experiencia de usuario) cuando se trate de desplazamiento, probablemente, la aplicación de prueba se detendrá antes de que incluso puede hacerlo.

    Recomiendo que revise esta dos bibliotecas para hacer fácil adaptadores:

    FastAdapter por mikepenz

    FlexibleAdapter por davideas

    • Creo que sus declaraciones acerca de la diferencia de rendimiento entre los dos son exageradas. He estado usando ListView en la producción de una app desde el año 2012, mostrando hasta 3000 artículos con ~10 puntos de vista diferentes en cada fila, absolutamente ningún problema de rendimiento sabio incluso en el antiguo Android 2.3 dispositivos.
  14. 0

    RecyclerView info

    La RecyclerView se introdujo con Android 5.0 (Lollipop). se incluye en la La Biblioteca De Soporte. Por lo tanto, es compatible con Android API de Nivel 7.

    De manera similar a la ListView, RecyclerView’s idea principal es proporcionar listado de funcionalidad en un rendimiento de manera amistosa. El «Recycler» parte de este punto de vista el nombre no está allí por casualidad. El RecyclerView en realidad puede reciclar los elementos con los que se está trabajando actualmente. El proceso de reciclaje se realiza gracias a un patrón llamado Vista De Titular.

    Pros & Contras de RecyclerView

    Pros:

    • integrado de animaciones para añadir, actualizar y eliminar elementos
    • exige el reciclaje de las vistas mediante el patrón ViewHolder
    • admite ambas redes y listas de
    • admite el desplazamiento vertical y horizontal
    • puede ser utilizado junto con DiffUtil

    Contras:

    • añade complejidad
    • no OnItemClickListener

    ListView info

    La ListView ha sido alrededor desde los inicios de Android. Estaba disponible incluso en API Level 1 y tiene el mismo propósito que el RecyclerView.

    El uso de la ListView es realmente simple. En este aspecto, no es como su sucesor. La curva de aprendizaje es más suave que el de la RecyclerView. Por lo tanto, es más fácil de comprender. No tenemos que lidiar con cosas como el LayoutManager, ItemAnimator o DiffUtil.

    Pros & Contras de ListView

    Pros:

    • uso simple
    • defecto adaptadores
    • disponible OnItemClickListener
    • es la fundación de la ExpandableListView

    Contras:

    • no abrazar el uso del patrón ViewHolder

Dejar respuesta

Please enter your comment!
Please enter your name here