如何以编程方式滚动到ListView的底部?

调用notifydatasetchanged(); 我想滚动到列表的底部,以便用户看到Listview中的最后一条logging。

(我正在写聊天模块,所以为了这个目的,我需要在列表底部的最新logging是可见的)

任何人都可以指导我如何实现这一目标?

尝试

 listView.post(new Runnable(){ public void run() { listView.setSelection(listView.getCount() - 1); }}); 

根据我的经验,“post”似乎是需要的,特别是如果您最近更新了列表。

我知道这个问题已经得到了答复,你们已经回答了一年多的时间。 但是更好的方法是成绩单模式。 有关演示,请参阅Views> Lists> Transcript下的Android API演示。

您可以在XML列表视图中设置以下内容。

 android:stackFromBottom="true" android:transcriptMode="alwaysScroll" 

无论何时调用notifyDataSetChanged()它都将始终有效。 如果您希望在聊天应用程序中获得更好的结果,您可以将android:transcriptMode设置为normal :只有当最后一个项目已经在视图中时,它才会滚动到底部。 这样,当其他用户聊天时,您的用户可以不中断地查看以前的聊天。

  • 成绩单模式
  • 从底部堆叠

我知道它很晚才回答,但可能会帮助某人。 使用android:transcriptMode="alwaysScroll"将强制listview滚动到底部(正如我们在这里使用的android:stackFromBottom="true" ),即使您尝试滚动顶部,通常需要大部分时间。 所以,而不是android:transcriptMode="alwaysScroll你可以使用android:transcriptMode="normal这将performance类似于聊天应用程序的要求,并不会强制滚动列表总是如果用户希望看到顶部的内容。