Emitir refrescando una vista de una fila en recyclerview

Quiero actualizar una vista de recyclerview cuando se ha llamado a notifyItemChanged. La cosa es que no quiero refrescar la fila entera pero solamente la visión de la fila. (Para evitar el efecto de parpadeo de la fila)

Hay un método llamado notifyItemChanged (int, payload obj).

¿Puedo usar eso para lograr eso? Si es así, ¿cómo hacerlo?

3 Solutions collect form web for “Emitir refrescando una vista de una fila en recyclerview”

Finalmente encontré cómo actualizar sólo la vista específica de una fila en RecyclerView.

(1) Anulación onBindViewHolder (Recycler.ViewHolder VH, int position, List payloads) en el adaptador

(2) Dentro de ese método onBindViewHolder,

if(payloads != null && !payloads.isEmpty() && (payloads.get(0) instanceof customObject)){ // update the specific view }else{ // I have already overridden the other onBindViewHolder(ViewHolder, int) // The method with 3 arguments is being called before the method with 2 args. // so calling super will call that method with 2 arguments. super.onBindViewHolder(holder,position,payloads); } 

(3) Por lo tanto, para notificar el cambio de datos y actualizar la vista, es necesario llamar a notifyItemChanged (int position, Object payload) . Necesita pasar el objeto customObject (modelo que contiene los datos) como objeto de carga.

 adapter.notifyItemChanged(i, obj); 

Nota: Necesita deshabilitar ItemAnimator del RecyclerView (Por defecto está habilitado). De lo contrario, el objeto de carga útil estará vacío.

 recyclerView.setItemAnimator(null); 

o

 ((SimpleItemAnimator)recyclerView.getItemAnimator()).setSupportsChangeAnimations(false); 

Para más referencia

Puede usar esto para obtener la vista del elemento actualizado:

 View v = recyclerView.getLayoutManager().findViewByPosition(position); if (v != null){ //update your view } 

Digamos que tiene un ArrayList de elementos , y se alimenta al adaptador RecyclerView. Que sea algo así.

 List<String> items = new ArrayList<>(); RecyclerAdapter adapter = new RecyclerAdapter(items); recyclerView.setAdapter(adapter); 

Ahora como puedo ver que desea insertar elementos en el RecyclerView y llamar a notifyItemChanged (int position) método para agregar sólo el único elemento.

Para esto, digamos que ha cambiado el valor del elemento en la posición 0. Ese es el primer elemento de la lista.

Ahora el uso apropiado del método notifyItemChanged (int position) será

 adapter.notifyItemChanged(0); 

Esto significa que el adaptador actualizará el recyclerview con el nuevo valor en la posición 0.

  • Viewpager está siendo expulsado de la pantalla
  • Las animaciones de elementos predictivos de RecyclerView no funcionan (APPEARING)
  • ¿Cómo implementar una lista interminable con RecyclerView?
  • ¿Recyclerview hace que el último elemento agregado sea el elemento seleccionado?
  • Android: Cómo implementar una galería de imágenes con RecyclerView
  • Cómo crear efecto Parallax en Recycler Ver elemento en Scroll?
  • SwipeRefreshLayout obstruye el desplazamiento de recycleview en el momento de desplazarse hacia arriba
  • Onclicklistener no está trabajando en recyclerview
  • Obtener las últimas publicaciones / datos de firebase con límite de 10 registros en android y poblar en Listview
  • ¿Que es mejor? NotifyDataSetChanged o notifyItemChanged en el bucle?
  • Android: Actualización de recyclerview con nuevos datos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.