我的问题:每当我通过其(自定义)SimpleCursorAdapter 更新其内容时,我的 ListView 会将其滚动位置重置为顶部。我希望 ListView 在更新时保持其滚动位置。
我开始时每次都创建一个新的适配器实例并使用ListView.setAdapter()
,但根据这个讨论,我应该更新适配器而不是重置它。我找不到可以正常工作的 SimpleCursorAdapter 的方法。
以下是我尝试过的一些事情,省略了方法参数:
-SimpleCursorAdapter.changeCursorAndColumns()
使用新光标成功更新了适配器,但仍重置了滚动位置。
-SimpleCursorAdapter.changeCursor()
行为相同。
-SimpleCursorAdapter.swapCursor()
直到 api 11 才可用,我正在为 api 8 开发。
-SimpleCursorAdapter.notifyDataSetChanged()
不更新 ListView。(也许我还缺少另一个步骤。)
-ListView.invalidate()
不更新 ListView。
-SimpleCursorAdapter.requery()
使 ListView 为空白,并且已被弃用。
- 我熟悉ListView.setSelection()
解决方案,但我不希望我的 ListView 在更新时移动。这会将其捕捉到列表中的某个位置。
这似乎应该是一个常见且简单的问题。有人处理过吗?