2016-12-12 4 views
0

dishListを私のサービスに送ろうとしていますが、止まっています。 dishListからdlにオブジェクトを取得しても、動作しません。 BUT下記のコードのようにdlを送信すると動作します。したがって、問題は領域返されたオブジェクトにあります。 retrofit2経由でレルムから返されたデータを送信する方法は?retrofit2でrealm-returnedデータを送信する方法は?

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) { 

     } 
    }); 

サービス方法は:

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

これは何が行われていますか? 'if(response.body()){response.body(); } '...これはあなたの期待通りにどのように機能していないのですか? 'mDishService.updateRepository(dishList)'は 'mDishService.updateRepository(dl)'と何が違うのですか? –

+0

"それは固まっている"と "うまくいきません"と明記してください。あなたはlogcatの中で例外を見ていますか? – Egor

+0

@ cricket_007、@Egor問題は、realmデータが直列化できないことです。そのため、realm.copyFromRealm(realmResults);を使用して、realmのオブジェクトからrealmResultsというバインディングを削除する必要があります。それは領域なしのリストを与える –

答えて

0

これはかなりrealm.copyFromRealm()は理にかなっている唯一のユースケースである

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

であるべき。

関連する問題