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);
Но после загрузки прокрутка не точно.
У вас есть идея?
Ответы
Ответ 1
Я думаю, вы должны изучить TranscriptMode и StackFromBottom с вашим списком просмотров:
android:stackFromBottom="true"
android:transcriptMode="normal"
Установив режим транскрипции в нормальное состояние, он будет прокручиваться до нижней части только в том случае, если последний элемент уже был в поле зрения. Таким образом, пользователи могут просматривать предыдущие элементы списка без прерывания, когда вы вызываете notifydatasetchanged.
Ответ 2
Я исправил это, используя тот же код, что и вы, но я обновляю индексную переменную на количество элементов, которые я добавляю в адаптер, прежде чем восстанавливать позицию. Кажется, сделать трюк.
Ответ 3
выполните следующие действия:
Collections.reverse(YourList); // ADD THIS LINE TO REVERSE ORDER!
YourList.notifyDataSetChanged;