从 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:从片段调用时如何从活动中获取返回结果?

Android开发 从多个Activity返回到第一个Activity时如何实现“再按一次退出程序”

Activity系列讲解---返回结果的处理

如何从 Back Press 的 Activity 中返回 Fragment

jquery如何获取ul中第一个li和最后一个li

如何获取系统当前运行的activity对象