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