2016-04-30 24 views
17

Sto provando a cambiare il campo con il tempo nel mio RecyclerView. Ogni individuo ViewHolder contiene uno CardView e alcune altre viste all'interno. L'unica visione che voglio animare è quella con il tempo. Come si può vedere, non c'è animazione:Aggiornamento parziale di RecyclerView.ViewHolder

adapter.notifyDataSetChanged(); 

RecyclerView with no animations

articoli Aggiornamento uno per uno non aiuta, perché poi tutto il CardView lampeggia:

int len = adapter.getItemCount(); 
for(int i=0;i<len;i++) { 
    adapter.notifyItemChanged(i); 
} 

enter image description here

C'è un modo per ottenere un elenco di tutti gli ViewHolders per poi aggiornare (animato) proprio quello TextView dentro ognuno?

+1

È necessario aggiungere animatore elemento –

risposta

35

È possibile notificare agli osservatori di RecyclerView.Adapter l'emissione di un aggiornamento parziale del proprio RecyclerView.ViewHolders passando un carico utile Object.

notifyItemRangeChanged(positionStart, itemCount, payload); 

Dove payload potrebbe essere o contenere un flag che rappresenta il tempo relativo o assoluto. Per associare lo payload ai titolari di view, ignorare il metodo onBindViewHolder(viewHolder, position, payloads) seguente nell'adattatore e controllare il parametro payloads per i dati.

@Override 
public void onBindViewHolder(MyViewHolder viewHolder, int position, List<Object> payloads) { 
    if (payloads.isEmpty()) { 
     // Perform a full update 
     onBindViewHolder(viewHolder, position); 
    } else { 
     // Perform a partial update 
     for (Object payload : payloads) { 
      if (payload instanceof TimeFormatPayload) { 
       viewHolder.bindTimePayload((TimeFormatPayload) payload); 
      } 
     } 
    } 
} 

Entro il metodo MyViewHolder.bindTimePayload(payload), aggiornare il vostro tempo TextViews per il formato ora specificato nella payload.

+1

Funziona splendidamente. Grazie mille. – PhpXp

+0

Fratello che hai salvato la giornata, ha funzionato come un incantesimo, stavo per cambiare la vista del riciclatore su viewpager. Ma la tua risposta mi ha anche fatto imparare e ho risparmiato un sacco di ore di duro lavoro –

Problemi correlati