2017-09-05 5 views
0

私は混乱しています。お手伝いできますか?私は似たような質問を読んでいますが、あなたの患者と注意のために事前に感謝しています。Retrofitのメソッドでデータを返すにはどうすればいいですか?混乱しますか?

Retrofitを使用してAPIコールから取得したデータをonCreateに戻したいと思います。ここで私はRetrofitを呼び出す私の機能です。

プライベートボイドloadTimeZoneAPI(ダブル緯度、ダブル経度、長いタイムスタンプ、文字列apiKeyTz){iは計算に使用する場合のonCreateするタイムゾーンの値を返す方法

String lat = Double.toString(latitude); 
    String lon = Double.toString(longitude); 
    String time = Long.toString(timestamp); 

    serviceTZ.getDataTZ(lat+","+lon, time, apiKeyTz).enqueue(new Callback<TimeZoneGoogle>() { 
     @Override 
     public void onResponse(Call<TimeZoneGoogle> call, Response<TimeZoneGoogle> response) { 
      TimeZoneGoogle result = response.body(); 
      timeZone = result.getTimeZoneId(); 

     } 

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

     } 
    }); 
} 

+0

レトロフィットクラスを呼び出している、そこから活動中の参照を与える作りますサーバーからのデータを持つデータとクラスを返すことにしました。 –

+0

@vikaskumarここに私のクラスのリンクがあります。https://gist.github.com/ArnalShoorukov/8776041 dc998bafc1d9c8370f6a3760c –

答えて

0

MainActivityのデータまたはビューに使用したアクティビティのコールバックリスナーが必要です。例えば :この

interface RetrofitListener{ 
     onDataLoad(TimeZoneGoogle timeZoneGoogle); 
    } 

のようなインタフェースは、あなたがどこにクラスを共有

public class ActivityTest extends AppCompatActivity implements ActivityTest.RetrofitListener { 

    RetrofitCall retrofitListener; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_test); 
     retrofitListener = new RetrofitCall(this); 
    } 
} 

、ここRetrofitCallクラスの

private class RetrofitCall { 
     private RetrofitListener retrofitListener; 

     public RetrofitCall(RetrofitListener retrofitListener) { 
      this.retrofitListener = retrofitListener; 
     } 
void getData(){ 
    getDataTZ(lat+","+lon, time, apiKeyTz).enqueue(new Callback<TimeZoneGoogle>() { 
      @Override 
      public void onResponse(Call<TimeZoneGoogle> call, Response<TimeZoneGoogle> response) { 
       TimeZoneGoogle result = response.body(); 
       timeZone = result.getTimeZoneId(); 

      } 

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

      } 
     }); 
} 
} 
関連する問題