我的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)。