ListView 对象上的 SaveInstanceState

Posted

技术标签:

【中文标题】ListView 对象上的 SaveInstanceState【英文标题】:SaveInstanceState on ListView objects 【发布时间】:2015-01-15 14:36:14 【问题描述】:

我有一个执行电影搜索并将 JSON 结果解析为“电影”对象的活动。 解析电影对象后,将被插入 ListView 适配器。 当我改变方向时,活动重新开始,结果消失了。

我怎样才能防止这种情况发生或保存对象并在RestoreInstanceState 上恢复它们​​?

我已经尝试过 onConfigurationChanged。

【问题讨论】:

【参考方案1】:

你需要做一些重构。

首先实现 onSaveInstanceState 并将您的列表保存到包中

@Override
protected void onSaveInstanceState (Bundle outState)
  outState.putSerializable("mylist", mylist);

然后在您的 OnCreate 检查您的捆绑包是否有列表并在不再次获取您的列表的情况下操作您的列表视图

@Override
protected void onCreate (Bundle savedInstanceState)
  super.onCreate(savedInstanceState);
  if(savedInstanceState!=null && savedInstanceState.getSerializable("mylist")!=null)
      populateListView(savedInstanceState.getSerializable("mylist"));
  else
      fetchList();
  

【讨论】:

以上是关于ListView 对象上的 SaveInstanceState的主要内容,如果未能解决你的问题,请参考以下文章

ListView显示的模板上的JQuery,如何分别触发每个对象的播放?

禁用 Android ListView 项目上的点击事件

检测标签上的点击,在 ViewCell 内,在 ListView 内

在嵌套对象上使用 for 循环

单击 ListView 上的删除按钮后删除 ListView 上的项目

Nativescript Vue:从ListView中的itemTap获取数组中的项目