Перемещение списка к последней позиции элемента
Я пытаюсь заставить мой просмотр списка перейти к последнему элементу, когда новые элементы добавляются в представление. С textview я мог бы просто добиться этого, сделав это
Layout layout = MyView.getLayout();
if(layout != null){
int scrollDelta = layout.getLineBottom(MyView.getLineCount() - 1)
- MyView.getScrollY() - MyView.getHeight();
if(scrollDelta > 0)
MyView.scrollBy(0, scrollDelta);
}
Но с listview с адаптером, я не могу понять метод для вызова. Моя настройка адаптера
MyView = (ListView) findviewById(R.id.MyView_list);
MyAdapter = new ArrayAdapter<>(this, R.layout.list, Entries);
MyView.setAdapter(MyAdapter);
2 ответа
Решение
Использование smoothScrollToPosition(int position)
, Это прокрутит просмотр списка, чтобы переданный элемент был на экране. Если вы не знаете количество предметов, используйте listView.smoothScrollToPosition(adapter.getCount());
Вы можете поиграть со свойством transcript mode of list. lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
Для получения дополнительной информации см. Http://developer.android.com/reference/android/widget/AbsListView.html#TRANSCRIPT_MODE_NORMAL