【问题标题】:Android Realm Retrofit relationship errorAndroid Realm Retrofit 关系错误
【发布时间】:2015-03-15 02:29:55
【问题描述】:

我在获取所有 POJO 和所有设置以便正确解析我的 JSON 时遇到问题。

我对 Android 开发还很陌生,所以解决方法可能很简单。

我能够在没有 Realm 的情况下让它工作。我认为修改了我的 POJO 以扩展 RealmObject。我的问题在于我的人际关系。我的数据已设置好,所以我有一个 WorkOrder 类和一个 WorkOrderItem 类。一个 WorkOrder 包含许多 WorkOrderItem。如果没有领域,我在我的 POJO 中将其定义为

private List<WorkOrderItem> workOrderItems = new ArrayList<WorkOrderItem>();

当我修改它以扩展 RealmObject 时,我开始遇到问题。我试过了

private RealmList<WorkOrderItem> workOrderItems;

还有

private RealmList<WorkOrderItem> workOrderItems = new RealmList<WorkOrderItem>();

无论哪种方式,我都会继续收到以下错误:

Error:(831, 82) error: incompatible types: List<WorkOrderItem> cannot be converted to RealmList<WorkOrderItem>

我已按照文档中的建议设置了我的 GsonConverter。

我已经阅读了所有文档以及我可以在网上找到的所有内容,但仍然没有找到解决方案。对此的任何帮助将不胜感激。

【问题讨论】:

  • 你遇到了演员阵容问题!显示设置 RealmList workOrderItems.. 的 sn-p 代码
  • @anderson_acs 我想你是在问我的 setter 方法?如果是这样的话。 public void setWorkOrderItems(RealmList&lt;WorkOrderItem&gt; workOrderItems) { this.workOrderItems = workOrderItems; }
  • 对不起,不是这样! - > 你的 RealmList workOrderItems =) 填充在哪里!
  • @anderson_acs 我正在使用改造/Gson 下载我的 JSON 并将其解析到我的模型中。此外,如果有帮助,我得到的错误是在编译期间而不是运行时。如果这不是您需要的信息,请告诉我。

标签: java android gson retrofit realm


【解决方案1】:

在请求回调时,您可能会收到List &lt;WorkOrderItem&gt; 所以我认为你需要从你的列表中创建你的Realmlist &lt;WorkOrderItem&gt;

你需要有两个对象WorkOrderItem 和其他WorkOrderItemRealm extends RealmObject

例如:

List<WorkOrderItem> mWorkOrderList...
RealmList<WorkOrderItem> mRealmList... //WorkOrderItem need to be a RealmObject


...new Callback<List<WorkOrderItem> mWorkOrderList>() {

    @Override
    public void success(List<WorkOrderItem> mWorkOrderList, Response response) {

        for(WorkOrderItem mWorkOrderItem : mWorkOrderList){

            //create WorkOrderItemRealm
            WorkOrderItemRealm mWorkOrderItemRealm = realm.createObject(WorkOrderItemRealm.class); 

            //mWorkOrderItemRealm.set...(mWorkOrderItem.get...());

            mRealmList.add(WorkOrderItemRealm);
        }
    }

    @Override
    public void failure(RetrofitError error) {

    }
});

【讨论】:

  • 好的,我试试看。我是否还需要 WorkOrderClass 和 WorkOrderClassRealm?还是我有关系时只需要第二节课。此外,我可以完全控制更改我的 API。是否可以对我的 JSON 结构进行更改,以便我只需要一个类而不是 2 个?
  • 是的! WorkOrderClassRealm也是!
  • 成功了!似乎应该有一个更简单的方法。我可以在 Retrofit 和 Realm 中使用相同的类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
相关资源
最近更新 更多