2016-05-16 24 views
0

AndroidでPOJOとRetrofit2を使用してRESTサービスを呼び出してデータを取得します。私は期待どおりresponse.body()のデータを受け取りますが、このデータを任意のAndroid UIコンポーネントに割り当てることは望ましくありません。私はこの返されたオブジェクトを取得し、戻ったり、onResponseの外で作業したいと思います。Retrofit 2返信用応答データオブジェクト

申し訳ありませんJAVAやコールバックを使い慣れていませんが、検索時にコールバックを作成する必要があることがわかりましたが、書き方は不明です。誰かが助けてくれますか?ここで

はコードです:運転中

public String getUserIPCountry(Context context){  

    ipf = new Ipinfo(); 

    IpinfoAPI.Factory.getInstance().getCountryCode().enqueue(new Callback<Ipinfo>() { 
     @Override 
     public void onResponse(Call<Ipinfo> call, Response<Ipinfo> response) { 

      if(response.isSuccessful()){ 

       //Want to return/use below data outside of this method 
       //response.body().getCountryCode(); 
      } 
     } 

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

     } 
    }); 

    return null; 
}  

答えて

0

getUserIPCountryあなたはデータがサーバから到着したときに呼び出されますCallbackを設定します。 実行は停止せず、応答を待機します。 サーバーからの応答がOKの場合はonResponseが呼び出され、何か問題が生じた場合はonFailureが呼び出されます。

したがって、CallbackonResponseメソッドでは、データが到着したことを関心のあるクラス(たとえば、データを示すuiクラス)に通知する必要があります。

+0

ありがとうPablo。私はUI要素にデータを設定することができますか、または内部応答で作業します。私が欲しいのは、 - 私はオブジェクトの公開Ipinfo xyzが作成され、ipinfo型のoncreateメソッドで割り当てられています。したがって、xyzの一部はgetUserIPCountryメソッドの外で値が割り当てられ、onresponse内でxyz.setip()を使用してIPフィールドのみを割り当てたいとします。 –

関連する問題