2014-11-22 5 views
13

Я использую RecyclerView в качестве базы для своего списка данных. Я внедрил пользовательский RecyclerView.Adapter, основанный на ArraList. при получении данных из Интернета кода, который я бег это:android notifyItemRangeInserted disable autoscroll

public void addItems(List<Item> items){ 

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

Проблема заключается в том, что для после выполнения этого кода я получаю Автопрокрутку в нижнюю части списка (последний элемент теперь виден)

Есть ли способ отключить это? не могли найти подобных вопросов.

соответствующая информация: мой адаптер имеет 2 viewHolders - для позиции 0 она имеет вид (с viewType 0) и для остальной части списка имеет вид с viewType 1

Спасибо за вашу помощь!

Roy

+0

Вы пытались вызвать stopScroll()? –

+0

благодарит за вашу помощь. Я попробовал это сейчас, он не работает. также я не сумасшедший о решении post insert, потому что он может начать прокрутку немного до остановки StopScroll. но во всяком случае это не работает/-: – royB

+0

проверить, есть ли у вас где-то scrollToPosition, так как по умолчанию RecyclerView не делает автоматическую прокрутку – pskink

ответ

20

Проблема в вашей позиции. Старт. Должно быть:

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

Да, хорошо ... как вы можете видеть, я добавил комментарий, который так говорит (из feb 23). спасибо, так или иначе! – royB

+3

@localhost @royB В соответствии с документом 'positionStart' является позицией первого элемента, который был вставлен. Так не должно быть 'data.size()' coz, где был вставлен первый элемент? : p –

+0

@AbhishekV yep: D Но по этому вопросу он должен быть +1 – localhost