Android 离开“活动”时,列表视图中的光标位置丢失

Android 离开“活动”时,列表视图中的光标位置丢失,android,sqlite,Android,Sqlite,我使用自定义游标适配器用Sqlite数据库中的数据填充ListView 当用户离开我的活动并稍后返回时,我松开光标中的位置,ListView再次定位到第一个项目 跳过startManagingCursor()时,它会按预期工作。我如何解决这个问题 下面是一个名为OnCreate()的代码段: LatinSuD是正确的,您需要将位置存储在捆绑包中。当活动再次激活时,将重新查询托管光标,这样您将失去位置。有关保存状态信息的示例,请参阅notepad3教程 您可能需要将光标位置存储在bundle中这对

我使用自定义游标适配器用Sqlite数据库中的数据填充ListView

当用户离开我的活动并稍后返回时,我松开光标中的位置,ListView再次定位到第一个项目

跳过startManagingCursor()时,它会按预期工作。我如何解决这个问题

下面是一个名为OnCreate()的代码段:


LatinSuD是正确的,您需要将位置存储在捆绑包中。当活动再次激活时,将重新查询托管光标,这样您将失去位置。有关保存状态信息的示例,请参阅notepad3教程

您可能需要将光标位置存储在bundle中这对我来说似乎是个bug。我不知道是什么原因造成的,但你是对的,这是托管游标和自动重新查询。这似乎很奇怪。为什么这种便利性与正常的ListView行为相冲突,似乎是错误的设计。重新查询有可能带来全新的数据,在这种情况下,ListView无法从逻辑上恢复状态。大多数情况下,虽然重新查询实际上并没有改变数据集,所以它肯定应该恢复位置;不更改ListView位置。请尝试ListView.setSelection(savedposition);谢谢实际上,我必须记住Listview ItemClickListener中所选项目的位置(触摸模式下的Listview.GetSelectEditePosition()总是返回无效的位置),然后通过Listview.requestFocusFromTouch()还原它;listview.setSelection(保存位置);
cursor  = db.getAll();      
startManagingCursor(cursor);
myAdapter = new MyAdapter(listview.getContext(), cursor, true);
listview.setAdapter(myAdapter);