2016-12-12 3 views
0

Ich versuche, dishList zu meinem Dienst zu senden, aber es ist fest. Selbst wenn ich ein Objekt von dishList bis dl bekomme, funktioniert es nicht. ABER wenn ich dl wie im unten gezeigten Code sende, funktioniert es. Daher ist das Problem in Realm zurückgegebenen Objekten. Wie sende ich Realm-Return-Daten über Retrofit2?So senden Sie Realm-Return-Daten durch Retrofit2?

RealmResults<Dish> realmResults = realm.where(Dish.class).findAll(); 
    List<Dish> dishList = realmResults.subList(0, realmResults.size()); 
    List<Dish> dl = new ArrayList<>(); 
    dl.add(new Dish()); 
    mDishService.updateRepository(dishList).enqueue(new Callback<Boolean>() { 
     @Override 
     public void onResponse(Call<Boolean> call, Response<Boolean> response) { 
      if (response.body()) { 
       response.body(); 
      } 
     } 

     @Override 
     public void onFailure(Call<Boolean> call, Throwable t) { 

     } 
    }); 

Service-Methode:

@POST("/v1/dishes/repo/u") 
    Call<Boolean> updateRepository(@Body List<Dish> dishes); 
+0

Was macht das? 'if (response.body()) {response.body(); } ... Wie genau funktioniert das nicht, wie du es erwartest? Was unterscheidet 'mDishService.updateRepository (dishList)' von 'mDishService.updateRepository (dl)'? –

+0

Bitte klären Sie "es ist fest" und "es funktioniert nicht", was genau passiert? Sehen Sie im logcat irgendwelche Ausnahmen? – Egor

+0

@ cricket_007, @Egor Problem ist, dass Realm-Daten nicht serialisiert werden können, deshalb ist es notwendig, Binding von Realm von seinen Objekten zu entfernen, wie meine 'realmResults' ny mit' realm.copyFromRealm (realmResults); '. Es gibt Liste ohne Realm –

Antwort

0

Sollte

mDishService.updateRepository(
    realm.copyFromRealm(realm.where(Dish.class).findAll()) 
).enqueue(new Callback<Boolean>() { 

Das ist so ziemlich das einzige Anwendungsfall, in dem realm.copyFromRealm() Sinn macht.