viewholder uso studio recyclerview personalizado listas ejemplo dependency android static android-recyclerview android-viewholder

android - uso - ¿Qué diferencia hay entre el visor estático y el no estático en RecyclerView Adapter?



uso del recyclerview (3)

¿Cuáles son las ventajas de este enfoque (el uso de una clase anidada estática en mi clase MyAdapter extiende RecyclerView.Adapter):

static class MyVH extends RecyclerView.ViewHolder {...}

Y este enfoque (usando la clase interna miembro):

class MyVH extends RecyclerView.ViewHolder {...}

¿O no afecta el rendimiento y podrían usarse ambos enfoques?


Al usar estática, solo significa que puede reutilizar MyVh en otros adaptadores. Si sabe con certeza que solo necesitará MyVh en ese adaptador, entonces debe hacerlo no estático.

Si lo necesita en otros adaptadores, incluso puede ser mejor crearlo como una clase separada por completo, en lugar de una clase anidada.

¡No debería haber efectos en el rendimiento para estático vs no estático!


Es más una pregunta de Java que una pregunta de Android. Se recomienda utilizar estática para las clases internas para evitar pérdidas de memoria si elimina sus instancias de la clase. Puedes echar un vistazo a this increíble publicación que explica las pérdidas de memoria en las clases internas.

Básicamente lo que dice nyx:

  • Si declara el marcador de vista como estático, puede reutilizarlo en otros adaptadores. De todos modos, no recomiendo hacerlo, crear una nueva clase separada y usarla desde múltiples lugares, tiene más sentido. Una clase para un propósito.
  • En el caso de los titulares de vistas, estas clases solo se utilizarán dentro del adaptador, sus instancias no deberían ir al fragmento o actividad ni a ningún otro lugar solo por definición. Esto significa que tenerlo estático o no estático, en el caso de los titulares de vistas, es lo mismo.

Respondiendo a su pregunta de rendimiento, puede echar un vistazo a this respuesta. El estático tomará menos memoria que el otro, pero nuevamente, estamos hablando de recicladores que reciclarán las instancias, por lo que el impacto de la memoria no es un problema.


Si desea utilizar un marcador de vista en muchos lugares, se recomienda crear clases separadas. De lo contrario, si desea utilizar el marcador de vista solo en un lugar, cree un marcador de vista anidado no estático. Un visor estático no tiene ningún sentido

En la mayoría de los lugares, uso la clase de marcador anidado