【发布时间】:2014-03-02 19:18:32
【问题描述】:
我想构建一个像普通 ListView 一样工作的 ListView,除了第一个项目在底部并向上增长,而不是第一个项目在顶部并向下增长。
当然,我可以只使用普通的 ListView,颠倒适配器的顺序,然后让它滚动到列表中的最后一项……但这在很多方面都不够优雅,尤其是在添加新行时.
例如,我希望 ListView 记住位置,但位置是从底部而不是顶部。所以,如果他们在底部,他们应该保持在底部,但是如果他们从底部向上看 3,当添加新项目时,他们应该仍然在看那个项目。 (在 ListView 中是如何正常工作的,但反过来。)
想知道是否有人有任何巧妙的技巧来反转 Android ListView 的极性?
这方面的经典用例是聊天消息列表,其中最新消息位于底部,项目通常添加到底部。如果有人在列表的末尾,当有新消息进来时,他们仍然希望在列表的末尾。但是如果他们已经从底部滚动,他们不希望他们的滚动位置被随机重置.
【问题讨论】:
-
对订单适配器执行相同操作并滚动到底部.. 现在如果在您
adapter.notifyDataSetChanged();更新活动以滚动到底部时添加了新项目.. 所以基本上每当您添加一个新项目将始终滚动到底部。 -
谢谢,是的,这就是我目前的做法。然而,这并不完美。在普通的 ListView 中,如果您从顶部滚动,并且适配器发生变化,它并不总是滚动回顶部。如果用户向上滚动并突然拉回底部,这会让用户感到不安。
标签: android listview android-listview scroll