在使用listAdapter更新listview之后,我想确保列表一直滚动到底部,以便显示列表中输入的最后一个元素。我怎么能这样做?
我试过这个但没有运气:
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
谢谢
答案 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);