Listview在更新列表后滚动到列表的末尾

时间:2010-08-31 06:29:54

标签: android listview scroll

在使用listAdapter更新listview之后,我想确保列表一直滚动到底部,以便显示列表中输入的最后一个元素。我怎么能这样做?

我试过这个但没有运气:

lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);

谢谢

8 个答案:

答案 0 :(得分:405)

假设您知道列表数据何时发生更改,您可以通过将列表选择设置为最后一行来手动指示列表滚动到底部。类似的东西:

private void scrollMyListViewToBottom() {
    myListView.post(new Runnable() {
        @Override
        public void run() {
            // Select the last row so it will scroll into view...
            myListView.setSelection(myListAdapter.getCount() - 1);
        }
    });
}

答案 1 :(得分:232)

您需要在列表视图中使用这些参数:

  • 滚动 lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);

  • 将列表的头部设置为底部 lv.setStackFromBottom(true);

您也可以在XML中设置这些参数,例如。像这样:

<ListView
   ...
   android:transcriptMode="alwaysScroll"
   android:stackFromBottom="true" />

答案 2 :(得分:27)

我已成功使用此功能来响应按钮点击,因此我猜您在更新内容后也可以使用它:

myListView.smoothScrollToPosition(theListAdapter.getCount() -1);

答案 3 :(得分:9)

使用: 将列表的头部设置为底部lv.setStackFromBottom(true);

为我工作,当列表首次进入可见性时,列表会自动滚动到底部。然后列表按{0}}滚动。

答案 4 :(得分:9)

要在ListFragment中获取此内容:

getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 
getListView().setStackFromBottom(true);`

添加了这个答案,因为如果有人在谷歌搜索与ListFragment相同的问题,他只是找到了这个..

此致

答案 5 :(得分:6)

我用

setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);

在底部添加条目,较旧的条目在顶部滚动,就像聊天记录

答案 6 :(得分:3)

成绩单模式是您想要的,并由Google Talk和SMS / MMS应用程序使用。在添加项目时是否正确调用适配器上的notifyDatasetChanged()?

答案 7 :(得分:2)

最简单的解决方案是:

    listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
    listView.setStackFromBottom(true);