我有一个名为Person的类,其中一个变量是一个名为衣服的领域列表:
public class Person extends RealmObject{
private RealmList<Clothing> clothes;
}
衣服用于在RecyclerView中显示,其中可以编辑内容,例如数量,衣服颜色或布料类型。
编辑服装价值时:
public void setCloth(int i, Cloth cloth) {
realmInstance.beginTransaction();
clothes.set(i, cloth);
realmInstance.commitTransaction();
}
当然,记录已保存。我的问题是,如果用户,取消编辑WHOLE Person对象。然后衣服清单的变化将持续存在。
请帮忙。
答案 0 :(得分:1)
我相信你会非常喜欢嵌套交易(https://github.com/realm/realm-java/issues/1509)。
在下一版Realm中,将引入一种新方法copyFromRealm()
。您应该复制clothes
列表,并在提交copyToRealmOrUpdate()
对象时使用Person
。
答案 1 :(得分:0)
我现在已经解决了这个问题:
解决方案是,如果您正在使用片段或活动,并通过小部件显示领域对象及其关系,请立即开始交易。
Realm realmInstance = Realm.getInstance(this);
realmInstance.beginTransaction();
这样,直接在域对象上进行的更改是否允许关系或普通变量。
要取消所做的更改,只需使用:
realmInstance.cancelTransaction();
可以通过覆盖onBackPressed或任何取消编辑的方法来调用此代码。
取消交易后,包括RealmList对象在内的所有更改都将被没收。
更多信息: 我通过带编辑控件的适配器(等设置数量,更改布料类型)在recyleview中显示衣服列表数组。该解决方案也可用于该场景。
希望这有帮助。