Перемещение списка к последней позиции элемента

Я пытаюсь заставить мой просмотр списка перейти к последнему элементу, когда новые элементы добавляются в представление. С 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

Другие вопросы по тегам