El adaptador de RecyclerView notifyDataSetChanged no funciona

Yo extendí

RecyclerView.Adapter<RecyclerView.ViewHolder> 

Y cuando llamé:

 mRecyclerView.getAdapter().notifyDataSetChanged(); 

No pasó nada.

La única manera de actualizar la vista es volver a configurar el adaptador ( ver esta respuesta ):

 mRecyclerView.setAdapter(new MyAdapter(...)); 

Tengo dos problemas con esta solución:

  1. Puedo ver un parpadeo en la pantalla cuando vuelvo a configurar el adaptador
  2. La vista de lista vuelve a la primera posición.

¿Algunas ideas?

5 Solutions collect form web for “El adaptador de RecyclerView notifyDataSetChanged no funciona”

Si getItemCount() devuelve 0, entonces notifyDataSetChanged() no hará nada. Asegúrese de que al inicializar su adaptador, está pasando un conjunto de datos válido.

Si notifyDataSetChanged() no notifyDataSetChanged() actualizaciones de vista, es posible que se haya olvidado de llamar a SetLayoutManager() en su RecyclerView (como lo hice yo). Sólo no te olvides de hacer esto:

 var manager = new LinearLayoutManager(Context, LinearLayoutManager.Vertical, false); _list.SetLayoutManager(manager); 

Antes de llamar a SetAdapter() ;

Lo siento por código C #, estoy usando Xamarin.

De acuerdo con los javadocs: Si está escribiendo un adaptador, siempre será más eficiente utilizar los eventos de cambio más específicos, si es posible. Confíe en notifyDataSetChanged() como último recurso.

 public class NewsAdapter extends RecyclerView.Adapter<...> { private static List mFeedsList; ... public void swap(List list){ if (mFeedsList != null) { mFeedsList.clear(); mFeedsList.addAll(list); } else { mFeedsList = list; } notifyDataSetChanged(); } 

Estoy utilizando Retrofit para obtener la lista, en el uso onResponse () de Retrofit,

 adapter.swap(feedList); 

Quiero compartir algo, yo estaba enfrentando el mismo problema. Pero lo que estaba haciendo mal fue. Estaba creando la instancia del adaptador cada vez que nuevo y que haciendo notificysetDatachange () a esa nueva instancia no la más vieja.

Por lo tanto, asegúrese de que el adaptador a quien notificysetDatachange () debería ser uno más antiguo. La esperanza debajo del ejemplo ayuda.

  MyAdapter mAdapter = new MyAdapter(...) mRecyclerView.setAdapter(mAdapter ); // TODO mAdapter.modifyData(....); mAdapter.notifySetDataChange(); MyAdapter extends baseAdapter { MyAdapter () { } modifyData(String[] listData) { } } 

NotifyDataSetChanged () sholud se llama en el hilo principal.

  • Extraño comportamiento de las imágenes en RecyclerView
  • App fallando al intentar usar RecyclerView en android 5.0
  • RecyclerView no recicla las vistas si el recuento de vistas es pequeño
  • ¿Qué es alertcontroller.recyclelistview
  • RecyclerView ItemTouchHelper Action_Drag_Ended?
  • Tengo una Recyclerview y una lista con 5000 ítems pero solo quiero cargar 100 ítems a la vez
  • GridLayoutManager - el ancho de la columna envuelve a su propio hijo mayor
  • Actualización parcial de RecyclerView.ViewHolder
  • Custom GridlayoutManager para WRAP_CONTENT en un RecyclerView
  • SetAlpha () en onBindView en RecyclerView no funciona en la primera pantalla
  • Cómo agregar Android Support v7 bibliotecas en eclipse?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.