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.

  • Causa de NullPointerException android.support.v7.widget.RecyclerView.onMeasure
  • Lista de vídeos de Android ListView
  • Actualizar Recyclerview de otra actividad
  • StaggaredGridLayoutManager no funciona correctamente
  • Pulsar el botón de clic dentro de una fila en RecyclerView
  • Android Visualización de datos de json a cardview en RecyclerView
  • Cómo crear un menú contextual para RecyclerView
  • Arrastrar y soltar vista fuera de Recyclerview
  • Lista 2D con RecyclerView en HorizontalScrollView
  • Expanda CardView dentro de RecyclerView como nueva actividad como Inbox de Google Android
  • NotifyDataSetChanged no funciona en RecyclerView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.