Listview更新列表后滚动到列表的末尾
我想确保列表滚动到底部,我已经使用listAdapter更新列表视图,以便它显示列表中input的最后一个元素。 我怎样才能做到这一点 ?
我尝试过,但没有运气:
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
谢谢
假设您知道列表数据何时发生变化,您可以通过将列表select设置为最后一行来手动指示列表滚动到底部。 就像是:
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); } }); }
您需要在列表视图中使用这些参数:
-
滚动
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
-
将列表的头部设置为底部
lv.setStackFromBottom(true);
你也可以用XML来设置这些参数,例如。 喜欢这个:
<ListView ... android:transcriptMode="alwaysScroll" android:stackFromBottom="true" />
在你的xml布局中,为listview设置下列参数。
android:stackFromBottom="true" android:transcriptMode="alwaysScroll"
干杯!!!
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); } });
我已经成功地使用它来响应button的点击,所以我猜你也可以在更新内容后使用它:
myListView.smoothScrollToPosition(theListAdapter.getCount() -1);
使用:将列表的头部设置为底部lv.setStackFromBottom(true);
为我工作,当列表首次显示时,列表会自动滚动到底部。 该列表然后滚动,因为它应该与TRANSCRIPT_MODE_ALWAYS_SCROLL
。
我用
setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
在底部添加条目,较旧的条目从顶部滚动,如聊天logging
为了得到这个ListFragment:
getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); getListView().setStackFromBottom(true);`
添加了这个答案,因为如果有人做一个谷歌search与ListFragment相同的问题,他只是发现这..
问候
抄录模式是你想要的,并被Google Talk和SMS / MMS应用程序使用。 添加项目时,您是否正确地调用了适配器上的notifyDatasetChanged()?