0

Ich frage mich, wie man RecyclerView erzwingen kann, um richtige/nette Animation beim Löschen von Element vor einem mit fester Position und spezifischem Layout zu erzwingen.RecyclerView animation onEntfernen mit festem Element

Ich habe versucht, auf dieser tutorial aufzubauen, die gut funktioniert, bis meine spezifischen Anforderungen.

nur einfache Änderungen Code Tutorial:

@Override 
public int getItemViewType(int position) { 
    if(position == 3){ 
     return IREGULAR; 
    } 
    return REGULAR; 
} 

@Override 
public ColorViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view; 
    if(viewType == REGULAR) { 
     view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); 

    }else{ 
     view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_iregular, parent, false); 
    } 

    // rest of tutorial code down here 
} 

@Override 
public void onBindViewHolder(ColorViewHolder holder, int position) { 
    int color; 
    if(getItemViewType(position) == REGULAR) { 
     color = colors.get(position); 
    }else{ 
     color = 0xFF000000; 
    } 
    // rest of tutorial code down here 
} 

So dritter Punkt wird etwas höher und immer schwarz sein.

enter image description here

Wie Sie auf dem Bild oben sehen können, Animation funktioniert gut, bis Punkt unterhalb dritter Position (iregular eins) gelöscht wird, aber während es oben dann großer schwarzer Raum erscheinen, wo Elemente wieder binded werden. Wie kann ich eine bessere Animationserfahrung erzielen?

Antwort

1

Nachdem Sie eine Zeile entfernen, müssen Sie unter Methoden aufrufen:

notifyItemRemoved(position); 
notifyItemRangeChanged(position, getItemCount()); 
+0

Dies ist wahrscheinlich die richtige Antwort, während es wirklich gut in Demo oben erwähnt arbeitet. Aber in meinem realen Projekt funktioniert es nicht richtig. Vielleicht liegt es an einem komplexeren Layout bzw. Zeit verbringen in OnCreate und OnBind-Methoden. Während in Demo ist es fast 0ms, in meinem realen Projekt ist es zwischen 5-33ms. – ThinkDeep

Verwandte Themen