我有一个包含类对象列表的recyclerView。目前,当我关闭我的应用程序时,recyclerView中的所有列表都会丢失,重新启动应用程序后,recyclerView不会显示任何内容(没有列表)。
即使在我被关闭和销毁之后,我还会用什么来保留清单呢?
public class Info {
public String pName;
public String pContact;
public Character pGender;
public int pID;
public String tDateTime; // today's date and time
}
我在arraylist中存储此类的对象以填充我的recyclerview适配器。
答案 0 :(得分:1)
保存状态:
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
// Save list state
mListState = mLayoutManager.onSaveInstanceState();
state.putParcelable(LIST_STATE_KEY, mListState);
}
恢复状态:
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
// Retrieve list state and list/item positions
if(state != null)
mListState = state.getParcelable(LIST_STATE_KEY);
}
然后更新LayoutManager:
@Override
protected void onResume() {
super.onResume();
if (mListState != null) {
mLayoutManager.onRestoreInstanceState(mListState);
}
}
答案 1 :(得分:1)
覆盖活动中的onSaveInstanceState并保存模型的状态,而不是布局管理器的状态。如果视图显示任何数据,你肯定在某处有数据模型。
至少,您需要记住模型中当前项目的数量。这是因为模型能够从某个地方获取所需项目的内容。如果不是或需要太长时间,则状态还需要包括正在显示的项目。像
这样的东西@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("d.list.data", adapter.getState());
}
而且,必须恢复国家:
if (savedInstanceState != null) {
adapter.setState(savedInstanceState.getSerializable("d.list.data"));
}
Here是为使用RecyclerView的模型保存和应用状态的类的代码。