我的Activity中有一個成員變量,它是一個ArrayList。填充此ArrayList的對象是我定義的名爲RatingItem的對象。 RatingItem有幾個成員增值稅,如評級,評論,身份證等。保存自定義對象ArrayList的狀態
我想將此ArrayList保存在onSaveInstanceState中,以便它可以從onRestoreInstanceState重新填充。做這個的最好方式是什麼?我從來沒有拯救過這種複雜性的對象的狀態。
謝謝您的幫助
我的Activity中有一個成員變量,它是一個ArrayList。填充此ArrayList的對象是我定義的名爲RatingItem的對象。 RatingItem有幾個成員增值稅,如評級,評論,身份證等。保存自定義對象ArrayList的狀態
我想將此ArrayList保存在onSaveInstanceState中,以便它可以從onRestoreInstanceState重新填充。做這個的最好方式是什麼?我從來沒有拯救過這種複雜性的對象的狀態。
謝謝您的幫助
你應該讓你的對象實現Parcelable。基本上,您必須添加方法來編寫和讀取Parcel
中對象的成員,然後添加具有幾個靜態工廠方法的自定義CREATOR
內部類。第一個鏈接頁面上有一個演示,但並不難。
然後你可以用Bundle.putParcelableArrayList()
一次性保存整個列表。 (當你用Bundle.getParcelableArrayList()
取回它時,你必須投下清單,但它會正常工作。)
一種選擇是迭代中的onSaveInstanceState您ArrayList和做類似
RatingItem ri = list.get(i);
ri.saveState(bundle);
然後自定義saveState
呼叫可以去拯救它的個人狀態的包,像這樣:
static final String RATING_KEY = "RATING_KEY";
int myId;
int myRating;
void saveState(bundle)
{
bundle.putInt(RATING_KEY + "_" + myId, myRating);
}
的myId
成員字段應該RatingItem的構造進行設置,是我們以確保項目中的所有成員字段可以在恢復時間鏈接回特定項目(通過反轉上述內容並使用bundle.getInt()
以及適當的鍵+ id)。