2014-11-22 11 views
13

Ich verwende RecyclerView als Basis für meine Datenliste. Ich habe einen benutzerdefinierten RecyclerView.Adapter implementiert, der auf ArraList basiert. Daten aus dem Internet auf dem Abrufen des Code, ich bin mit:android notifyItemRangeInserted AutoScroll deaktivieren

public void addItems(List<Item> items){ 

    final int size = data.size(); 
    data.addAll(items); 
    notifyItemRangeInserted(size, items.size()); 
} 

Problem ist, dass für die Zeit nach dem Ausführen dieses Codes Ich erhalte eine Autoscroll zum Ende der Liste (letztes Element jetzt sichtbar ist)

Gibt es eine Möglichkeit, dies zu deaktivieren? konnte keine ähnlichen Fragen finden.

relevante Informationen: mein Adapter haben 2 viewHolders - für die Position 0 eine Ansicht hat (mit Viewtype 0) und für den Rest der Liste hat es Ansicht mit Viewtype 1

Vielen Dank für Ihre Hilfe!

Roy

+0

Haben Sie versucht, stopScroll() aufzurufen? –

+0

danke für Ihre Hilfe. Ich habe es jetzt versucht, es funktioniert nicht. Ich bin auch nicht verrückt nach Post-Insert-Lösung, weil es ein wenig scrollen kann, bevor StopScroll läuft. aber irgendwie funktioniert es nicht/-: – royB

+0

überprüfen Sie, ob Sie irgendwo scrollToPosition aufgerufen haben, da standardmäßig RecyclerView nicht automatisch scrollen – pskink

Antwort

20

Problem ist in Ihrer PositionStart. Sollte sein:

public void addItems(List<QuestItem> items){  
    final int positionStart = data.size() + 1; 
    data.addAll(items); 
    notifyItemRangeInserted(positionStart, items.size()); 
} 
+0

ja gut ... wie Sie sehen können, ich habe einen Kommentar hinzugefügt, die so sagen (vom 23. Februar). Danke jedenfalls Kumpel! – royB

+3

@localhost @royB Laut dem Dokument ist 'positionStart' die Position des ersten Eintrags, der eingefügt wurde. Also sollte es nicht "data.size()" sein, also wo wurde das erste Element eingefügt? : p –

+0

@AbhishekV yep: D Aber in Bezug auf diese Frage sollte es +1 – localhost