RecyclerView - Keine Animation auf NotifyItemInsert

7

Aus irgendeinem Grund wird beim Hinzufügen eines neuen Elements zur RecyclerView (sollte an den Anfang der Liste eingefügt werden) es nicht angezeigt, es sei denn, ich scrolle die Liste nach unten und wieder nach oben und ohne Animation entweder. (Erscheint ganz oben in der Liste, als wäre es die ganze Zeit dort). Das Entfernen eines Objekts funktioniert mit den richtigen Animationen.

RecyclerViewAdapter:

%Vor%

SQLite-Datenbank:

%Vor%

Listener:

%Vor%

bearbeiten:

Ich sollte erwähnen, dass, wenn ich NotifyDataSetChanged anstelle von NotifyItemInserted verwende, das neue Element sofort angezeigt wird, aber die RecyclerView nicht zum Anfang der Liste scrollt. (Manuell nach oben scrollen, um es zu sehen).

    
Daniel Kim 03.01.2015, 18:04
quelle

2 Antworten

16

Dies passiert, weil LinearLayoutManager denkt, dass das Element über das erste Element eingefügt wird. Dieses Verhalten ist sinnvoll, wenn Sie nicht an der Spitze der Liste stehen, aber ich verstehe, dass es nicht intuitiv ist, wenn Sie an der Spitze der Liste stehen. Wir können dieses Verhalten ändern, während Sie nach dem Einfügen des Elements linearLayoutManager.scrollToPosition(0) aufrufen können, wenn linearLayoutManager.findFirstCompletelyVisibleItemPosition() den Wert 0 zurückgibt.

    
yigit 04.01.2015, 02:39
quelle
2

Ich repariere es mit dem ersten Element notifyItemChange. Einfach so:

%Vor%     
chenupt 15.03.2017 15:30
quelle