代码之家  ›  专栏  ›  技术社区  ›  UMAR-MOBITSOLUTIONS

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

  •  45
  • UMAR-MOBITSOLUTIONS  · 技术社区  · 14 年前

    打电话之后 notifydatasetchanged(); 我想滚动到列表的底部,以便用户看到列表视图中的最后一条记录。

    (我正在编写聊天模块,因此需要在列表底部显示最新记录)

    有人能指导我如何做到这一点吗?

    3 回复  |  直到 8 年前
        1
  •  73
  •   Jim Blackler    14 年前

    尝试

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

    根据我的经验,这个“帖子”似乎是必须的,特别是如果你最近更新了这个列表。

        2
  •  82
  •   JJD    11 年前

    我知道这个问题已经得到了答案,而你得到了答案,那是一年多前的事了。但更好的方法是转录模式。有关演示,请参见“视图”>“列表”>“文本”下的android api演示。

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

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

    每次你打电话来都会有用的 notifyDataSetChanged() . 你可以设定 android:transcriptMode normal 相反,如果你想为聊天应用程序得到更好的结果:只有当最后一个项目已经在视图中时,它才会滚动到底部。这样,当其他用户聊天时,您的用户可以查看上一个聊天,而不会中断。

        3
  •  1
  •   Toppers    8 年前

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