Mostafa Onaizán
después de actualizar Android Studio a Arctic Fox, recibo esta advertencia. Pero no sé cuál es la forma eficiente de notificar el cambio de datos. en mi código, estoy llenando el adaptador desde la llamada de red y luego notifico el cambio de conjunto de datos, pero el compilador me dio esto:
Siempre será más eficiente usar eventos de cambio más específicos si puede. Confíe en notificarDataSetChanged como último recurso. RecycleView
editar pregunta: quieren que usemos
DifUtil documentos
en lugar de notificarDataSetChanged() porque es mucho más rápido. consulta este artículo sobre medio.
Significa que si necesita cambiar toda la lista de elementos a la vez en la vista del reciclador, use notifyDataSetChanged()
.
Si necesita cambiar el elemento específico, entonces es mejor usar notifyItemChanged(position)
para que no actualice ni vuelva a vincular todo el conjunto de datos, lo que puede afectar el rendimiento si el conjunto de datos es grande.
Entonces es solo una sugerencia normal o tal vez una advertencia, no hay nada de qué preocuparse. 🙂
-
Entonces, si el adaptador está vinculado a Cursor en la base de datos subyacente u otro proveedor de datos, ¿debemos enfrentar esta advertencia en cualquier momento cuando se activa DataSetObserver? Bonito…
– A. Petrov
1 de diciembre de 2021 a las 7:40
-
Sí, quizás….
– Dev4Life
1 de diciembre de 2021 a las 16:37
La función notifyDataSetChanged
esencialmente considera que todos los datos en su conjunto de datos han cambiado. Esto provoca que todo VISIBLE
vistas usando estos datos para ser redibujados. Esto no es necesario cuando solo han cambiado algunos datos.
Debe identificar la posición en la que han cambiado los datos y notificar a su adaptador para que actualice solo esos elementos.
puede notificar el cambio de la posición particular utilizando estos métodos
- notificarItemChanged(int)
- notificarItemInserted(int)
- notificarItemRemoved(int)
- notificarItemRangeChanged(int, int)
- notificarItemRangeInserted(int, int)
- notificarItemRangeRemoved(int, int)
-
¿No sabría automáticamente qué elemento se ha cambiado/agregado/etc. si está usando un ListAdapter? con areItemsTheSame y areContentsTheSame, de lo contrario no puedo ver el beneficio de ListAdapter
– TootsieRockNRoll
23 de septiembre de 2021 a las 13:49
-
¿Qué tal en una situación en la que no sé cómo han cambiado los datos? es decir, actualizar la lista desde Internet? ¿Qué método debo usar?
– José cantó
1 oct 2021 a las 9:08
Es solo una sugerencia de Android Studio para actualizar los datos en RecyclerView.
Este consejo para notificar el cambio en los elementos de la vista del reciclador usando una actualización de posición particular solo como, notificarItemChanged(int), notificarItemInserted(int), notificarItemRemoved(int), notificarItemRangeChanged(int, int), notificarItemRangeInserted(int, int), notificarItemRangeRemoved(int, En t).
notificarDataSetChanged() debe utilizarse como último recurso o como último curso de acción. Esta función reiniciará y vinculará todas las vistas una vez más, lo que puede disminuir el rendimiento.