如何在onSaveInstanceState(Bundle outState)中保存ListView,所以我可以在Android中恢复它?

时间:2012-01-19 06:56:52

标签: android orientation

该列表是通过网络从远程供稿中提取的,所以我试图这样做 防止必须通过另一个网络拉动重新加载列表视图

基本上我只是希望应用程序保存所有内容然后 当用户更改方向时,自行恢复,而不是必须 制作另一个完整的回拨数据源。 以及我必须在onSaveInstanceState方法中写的内容。

我需要做什么才能帮助我,所以我可以继续? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

非常简单。
对于方向更改,即使屏幕方向从纵向更改为横向,也可以保留活动的数据,反之亦然。

你需要为横向方向制作一个单独的布局xml,使所有元素保持相同(没有视图及其ID),就像它们在纵向布局xml中一样。
将此xml放在名为“ lauout-land“在应用程序的”res“文件夹中,并给它与”layout“文件夹中的对应名称相同。
因此,每当他们将进行配置更改时,android将为此布局xml充气而不是肖像模式,反之亦然。

编辑部分
如果你想在方向改变之前保存一些东西(我真的不知道为什么你需要这个),你可以这样做公共空虚onConfigurationChanged(配置newConfig){
....... .....
保存任何你想保存的内容,如任何编辑文本的文字
任何arraylist
.... .... ..
        super.onConfigurationChanged(newConfig);
....现在将保存的数据设置为您想要的任何位置。
    如果您的列表在方向更改后重置,那么如果您的活动未被杀死,则包含数据的数组也必须仍然存在。
再次为您的列表设置适配器。
在此之后休息我的建议。

答案 1 :(得分:0)

您的列表视图必须由某种列表支持数组列表,集合等。您可以将该列表传递给android并要求它在您的活动终止并重生时为您存储该对象。这样做的方法是使用onRetainNonConfigurationInstance。检查android文档。这很简单。