Подтвердить что ты не робот

Android - Обратный список в виде сообщения

У меня есть маленький вопрос для моего Android-приложения. Я долго искал, но ничего не нашел о своей проблеме.

Сценарий: я должен отобразить revert listview (как Facebook Messenger). Когда пользователь прокручивается вверх, загружайте больше сообщений.

Проблема: после вызова notifiyDataAsChanged() прокрутка не совпадает! Я хочу сохранить ту же позицию, что и до загрузки.

Я пробовал этот код:

// save index and top position
int index = list.getFirstVisiblePosition()+result.size();
View v = list.getChildAt(index);
int top = (v == null) ? 0 : v.getTop();

// ...
// restore
list.setSelectionFromTop(index, top);

Но после загрузки прокрутка не точно.

У вас есть идея?

4b9b3361

Ответ 1

Я думаю, вы должны изучить TranscriptMode и StackFromBottom с вашим списком просмотров:

android:stackFromBottom="true"
android:transcriptMode="normal"

Установив режим транскрипции в нормальное состояние, он будет прокручиваться до нижней части только в том случае, если последний элемент уже был в поле зрения. Таким образом, пользователи могут просматривать предыдущие элементы списка без прерывания, когда вы вызываете notifydatasetchanged.

Ответ 2

Я исправил это, используя тот же код, что и вы, но я обновляю индексную переменную на количество элементов, которые я добавляю в адаптер, прежде чем восстанавливать позицию. Кажется, сделать трюк.

Ответ 3

выполните следующие действия:

Collections.reverse(YourList); // ADD THIS LINE TO REVERSE ORDER!
YourList.notifyDataSetChanged;