插入或更新从改造到领域的值

时间:2016-03-30 11:11:22

标签: android retrofit realm

我正在通过我的自定义类改造arraylist。我通过扩展RealmObject将同一个类转换为领域。但我无法添加数据或创建对象。如何将相同的数据写入/更新到领域?

我的改装回调:

Callback<ArrayList<CustomModel>> callback);

改造代码:

 @Override
            public void success(ArrayList<CustomModel> mycustomListModel, Response response) {

                        realm.beginTransaction();
                        realm.copyToRealmOrUpdate(mycustomListModel);
                        realm.commitTransaction();
}

2 个答案:

答案 0 :(得分:2)

  1. 首先要做的事:使用在线生成器创建一个普通的旧Java对象(PO​​JO),将您的json String转换为Java对象。以下是该工具的链接:jsonschema2pojo
  2. 创建您将用于存储数据的Realm对象。现在,既然你要返回一个数据列表,你必须循环,你不能只是存储它们而不验证!!
  3. 请注意,Retrofit返回的TYPE是您的POJO类,而不是您的Model类。

    由于POJO类具有相应的字段作为模型,因此每次循环时都必须创建一个新的Model对象,然后从pOJO类中提取字段并将它们设置在Realm模型上;然后最后copyToRealm并提交你的交易。

    我希望这有助于您了解其工作原理!!

答案 1 :(得分:2)

您可以从RealmObject扩展CustomModel

然后设置gson以进行正确的解析。

Gson gson = new GsonBuilder()
    .setExclusionStrategies(new ExclusionStrategy() {
        @Override
        public boolean shouldSkipField(FieldAttributes f) {
            return f.getDeclaringClass().equals(RealmObject.class);
        }

        @Override
        public boolean shouldSkipClass(Class<?> clazz) {
            return false;
        }
    })
    .create();

现在您可以将您的对象用于Retrofit。无需创建单独的类。

https://realm.io/docs/java/latest/#gson