way update recyclerview item data best android android-recyclerview redraw

update - Force RecyclerView para volver a dibujar Android



recyclerview update item (4)

¡Encontré la respuesta! La forma correcta de hacer esto es:

recyclerView.setAdapter(null); recyclerView.setLayoutManager(null); recyclerView.setAdapter(myAdapter); recyclerView.setLayoutManager(myLayoutManager); myAdapter.notifyDataSetChanged();

¡Después de eso, todos los artículos obtienen el nuevo estilo!

¿Hay alguna forma de volver a dibujar todos los elementos de RecyclerView ?

Tengo algunos temas (en style.xml) y después de cambiar el tema, necesito que se RecyclerView a dibujar RecyclerView .

Por lo tanto, quiero un método que obligue a volver a llamar onCreateViewHolder para cada elemento del adaptador.

Lo intenté:

  • llame a adapter.notifyDataSetChanged pero no se llama a onCreateViewHolder
  • llame a recyclerView.setVisibility(View.GONE) y luego recyclerView.setVisibility(View.VISIBLE)
  • llama a recyclerView.invalidate()
  • llama a recyclerView.setAdapter(null) y luego recyclerView.setAdapter(adapter) .
    Esto funciona bien para el 90% de los artículos. Solo el 90% de los artículos obtendrán el nuevo estilo, pero algunos artículos tendrán el estilo antiguo

Menciono que el RecyclerView está adjunto a una Actividad, no a un Fragmento.


Si desea forzar el redibujado, necesita un conjunto de vistas claro de RecycleView . Puede usar recyclerView.getRecycledViewPool().clear();


Las siguientes líneas de código hicieron el truco para mí

recyclerview.swapAdapter(myAdapter,false); recyclerview.setLayoutManager(myLayoutManager); myAdapter.notifyDataSetChanged();


Mire esta respuesta: https://.com/a/33342314/4142087

En breve, puede crear diferentes tipos de titulares de vista, cambiar el tipo de vista obligará a RecyclerView a pasar otro ViewHolder al onBindViewHolder .

Si usa setTheme , debe recrear toda la actividad de esta manera: https://.com/a/14367214/4142087