从 Activity 返回时如何获取最后一个 ListView 状态
Posted
技术标签:
【中文标题】从 Activity 返回时如何获取最后一个 ListView 状态【英文标题】:How to get last ListView state when coming back from Activity 【发布时间】:2020-10-05 10:51:15 【问题描述】:我有一个自定义 ListView,其中有一些 TextView 和一些按钮。单击每个按钮都会打开一个新活动。 问题是,假设我当前正在查看第 15 个 ListView 项目并单击打开新活动的按钮。从活动返回时,ListView 会返回到第一项,但我希望它从我在开始新活动时离开的视图(在本例中为第 15 项)恢复。我该怎么做?
我是android开发新手,所以不知道用什么关键词搜索这个问题! 任何帮助表示赞赏:)
【问题讨论】:
【参考方案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))
【讨论】:
以上是关于从 Activity 返回时如何获取最后一个 ListView 状态的主要内容,如果未能解决你的问题,请参考以下文章
Android开发 从多个Activity返回到第一个Activity时如何实现“再按一次退出程序”