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