在使用listAdapter更新了列表视图之后,我希望确保列表一直滚动到底部,以便它显示列表中输入的最后一个元素。我该怎么做呢?
我试过了,但运气不好:
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
谢谢你!
在使用listAdapter更新了列表视图之后,我希望确保列表一直滚动到底部,以便它显示列表中输入的最后一个元素。我该怎么做呢?
我试过了,但运气不好:
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
谢谢你!
当前回答
我使用
setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
可以在底部添加条目,而较旧的条目可以滚动到顶部,就像聊天记录一样
其他回答
我使用
setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
可以在底部添加条目,而较旧的条目可以滚动到顶部,就像聊天记录一样
组合使用TRANSCRIPT_MODE_ALWAYS_SCROLL和setSelection使它为我工作
ChatAdapter adapter = new ChatAdapter(this);
ListView lv = (ListView) findViewById(R.id.chatList);
lv.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
lv.setAdapter(adapter);
adapter.registerDataSetObserver(new DataSetObserver() {
@Override
public void onChanged() {
super.onChanged();
lv.setSelection(adapter.getCount() - 1);
}
});
假设您知道列表数据何时发生了变化,您可以通过将列表选择设置为最后一行来手动告诉列表滚动到底部。喜欢的东西:
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);
}
});
}
最简单的解决方案是:
listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
listView.setStackFromBottom(true);
要在ListFragment中得到这个:
getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
getListView().setStackFromBottom(true);`
添加这个答案,因为如果有人做一个谷歌搜索相同的问题与ListFragment,他只是发现这个..
问候