保存ArrayList在活动转换之间

时间:2015-04-22 23:55:54

标签: java android listview arraylist

我在这里遇到了很多麻烦。

问题:我有两个活动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);
}

0 个答案:

没有答案