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()?