调用notifydatasetchanged();
后,我想滚动到列表底部,以便用户查看Listview中的最后一条记录。
(我正在编写聊天模块,所以为了这个目的,我需要列表底部的最新记录才能看到)
任何人都可以指导我如何实现这一目标吗?
答案 0 :(得分:82)
我知道这已经得到了解答,你接受了答案,这是一年多以前的事了。但更好的方法是成绩单模式。有关演示,请参阅视图>下的Android API演示。列表>转录物。
您可以在XML中的列表视图中设置以下内容。
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
只要您拨打notifyDataSetChanged()
,它就会一直有效。如果您希望聊天应用程序获得更好的结果,则可以将android:transcriptMode
设置为normal
:仅当最后一项已在视图中时,它才会滚动到底部。这样,当其他用户聊天时,您的用户可以不间断地查看以前的聊天。
答案 1 :(得分:73)
尝试
listView.post(new Runnable(){
public void run() {
listView.setSelection(listView.getCount() - 1);
}});
根据我的经验,某些时候似乎需要“帖子”,特别是如果您最近更新了列表。
答案 2 :(得分:1)
我知道答案很晚但可能会对某人有所帮助。运用
android:transcriptMode="alwaysScroll"
会强制列表视图滚动到底部(因为我们已使用android:stackFromBottom="true"
),即使您尝试滚动顶部,这通常需要大部分时间。因此,您可以使用android:transcriptMode="alwaysScroll
代替android:transcriptMode="normal
,其行为类似于聊天应用的要求,并且如果用户想要在顶部看到内容,则不会强制滚动列表。