我在这里遇到了很多麻烦。
问题:我有两个活动A和B.在活动A中,我有一个包含自定义项目的列表视图。我将这些项的所有数据存储在ArrayList中。当用户单击listview项时,将调用活动B以显示有关该项的详细信息。当用户返回活动A时,listiview内的所有项目都消失。我知道我需要保存listview状态,所以我需要保存arraylist的数据。
问题:如何解决这个问题?
注意:我尝试过onSaveInstanceState和onRestoreInstanceState,但由于这两个活动A和B之间的转换很快,因此活动A不会被销毁。所以我无法将我的ArrayList保存在bundle对象中。 我还尝试使用SharedPrefereces和ContentValues,但这些类也不支持Parcelable对象和Lists。
感谢您的帮助!
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lstView = (ListView) findViewById(R.id.lstView);
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (ni != null && ni.isConnected())
updateListView();
registerClickCallback();
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
listResorces = savedInstanceState.getParcelableArrayList(LIST_RESOURCES);
ArrayAdapter<Record> adapter = new BandejaoItemAdapter(listResorces);
lstView.setAdapter(adapter);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArrayList(LIST_RESOURCES, listResorces);
}