Android 如何将onSaveInstanceState方法与Arraylist一起使用

Android 如何将onSaveInstanceState方法与Arraylist一起使用,android,state,Android,State,我已经用API结果构建了一个ArrayList。我不希望它在用户转动手机时消失 我应该如何处理onSaveInstanceState JSONObject json = new JSONObject(result); JSONArray searchArray = json.getJSONArray("Search"); for (int i = 0; i < searchArray.length(); i

我已经用API结果构建了一个ArrayList。我不希望它在用户转动手机时消失

我应该如何处理onSaveInstanceState

JSONObject json = new JSONObject(result);

                    JSONArray searchArray = json.getJSONArray("Search");

                    for (int i = 0; i < searchArray.length(); i++) {
                        JSONObject searchObject = searchArray.getJSONObject(i);
                        String title = searchObject.getString("Title");
                        String type = searchObject.getString("Type");
                        String year = searchObject.getString("Year");
                        String imdbID = searchObject.getString("imdbID");

                        movieList.add(new Movie(title, type, year, imdbID));
JSONObject json=新的JSONObject(结果);
JSONArray searchArray=json.getJSONArray(“搜索”);
对于(int i=0;i
假设要跟踪的arrayList名为
myArrayList
活动中的此代码将用于您的目的:

对于字符串数组:

ArrayList myArrayList;

//put value of myArrayList in some other method

protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putStringArrayList("myArrayList", myArrayList);
}


protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    myArrayList = savedInstanceState.getStringArrayList("myArrayList");
}
对于自定义对象数组:

ArrayList myArrayList;

//put value of myArrayList in some other method

protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putStringArrayList("myArrayList", myArrayList);
}


protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    myArrayList = savedInstanceState.getStringArrayList("myArrayList");
}
使对象的类实现接口
Parcelable
,然后将对象添加到
ArrayList
。在您的情况下,使
Movie
类实现
Parcelable
,并将对象添加到
movieList

然后使用相同的方法,而不是
putStringArrayList()
使用:

outState.putParcelableArrayList("movieList", movieList);
同样,使用:

movieList = (ArrayList<Movie>) savedInstanceState.getParcelableArrayList("movieList");
movieList=(ArrayList)savedInstanceState.getParcelableArrayList(“movieList”);

onRestoreInstanceState()中
方法获取数组。

使用json字符串并在bundle中对其进行svae我不认为我有json字符串,我有json对象谢谢,但我不明白用什么来代替你提到的myArrayList…向我们展示你的代码。这将帮助我更好地回答你的问题。你提到你已经创建了arraylist。u使用该arraylist代替myArrayList。是的,否则他必须实现自定义对象类型为
Parcelable
。然后将对象放入
arraylist
。然后使用
outState.putParcelableArrayList()
。不在这里,编辑原始问题并将代码放在那里。