0

我有一个列表视图,其中项目被动态添加到列表顶部。我展示了列表顶部发生的一些最新事件。问题是,这些事件发生得非常频繁,比如一秒钟发生 5 个事件。这使列表下降。假设用户正在查看一个事件,然后当新事件发生时,它将他正在阅读的事件推送到下面,然后消失。我希望将新事件添加到顶部,但仅当他向上滚动时才应显示。一旦发生新事件,我就会在适配器上调用 notifydatasetchanged,这会将列表向下推。无论如何我可以冻结滚动。我试图通过 setTranscriptMode 禁用滚动。但这似乎没有帮助。请给我一些提示并指出我

4

2 回答 2

5

您可以做的是尝试使用getFirstVisiblePosition()在屏幕上获取 ListView 的可见位置,然后使用您获得的位置的 setSelection 再次设置适配器。

int position = mListView.getFirstVisiblePosition();
mListView.setAdapter(adapter);
mListView.setSelection(position + 1);

我猜你需要 (position + 1) 因为你要为添加到列表的每个项目在列表顶部添加项目。

于 2012-07-13T09:47:18.480 回答
0

要根据需要显示最新事件,您需要设置android:transcriptMode="normal" 默认情况下,只要更改数据集,就会将焦点设置为最后一项。

http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:transcriptMode

另外,我想冻结滚动,然后才可以设置setOnScrollListener()和更新列表。

于 2012-07-13T10:47:09.267 回答