【问题标题】:How to get last ListView state when coming back from Activity从 Activity 返回时如何获取最后一个 ListView 状态
【发布时间】:2020-10-05 10:51:15
【问题描述】:
我有一个自定义 ListView,其中有一些 TextView 和一些按钮。单击每个按钮都会打开一个新活动。
问题是,假设我当前正在查看第 15 个 ListView 项目并单击打开新活动的按钮。从活动返回时,ListView 会返回到第一项,但我希望它从我在开始新活动时离开的视图(在本例中为第 15 项)恢复。我该怎么做?
我是android开发新手,所以不知道用什么关键词搜索这个问题!
任何帮助表示赞赏:)
【问题讨论】:
标签:
android
listview
android-activity
android-listview
listviewitem
【解决方案1】:
试试listView.setSelection(15); 或listView.smoothScrollToPosition(15);。在去活动15之前保存它,所以当你回到MainActivity时,只需使用保存的参数调用这个函数。
【解决方案2】:
最好的办法是手动恢复整个状态:
class MainActivity : AppCompatActivity() {
companion object {
private const val LIST_STATE_ARG = "SomeCustomString"
}
private lateinit var list: ListView
...
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putParcelable(LIST_STATE_ARG, list.onSaveInstanceState())
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
list.onRestoreInstanceState(savedInstanceState.getParcelable(LIST_STATE_ARG))
}
}