2017-09-05 4 views
0

Je suis confus s'il vous plaît pouvez-vous m'aider? J'ai lu des questions similaires mais ce n'est pas clair pour moi, merci d'avance pour votre patient et votre attention.Comment puis-je retourner des données dans la méthode de Retrofit je suis confus?

Je souhaite retourner à onCreate les données extraites de l'appel API en utilisant Retrofit. Voici ma fonction où j'appelle Retrofit.

loadTimeZoneAPI private void (double latitude, double longitude, horodatage à long, String apiKeyTz) {

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

     } 
    }); 
} 

Comment je vais retourner la valeur fuseauHoraire à onCreate où je vais utiliser pour le calcul.

+0

Partagez votre classe où vous voulez retourner les données et la classe dans laquelle vous avez des données du serveur –

+0

@vikaskumar Voici mon lien pour ma classe https://gist.github.com/ArnalShoorukov/8776041 dc998bafc1d9c8370f6a3760c –

Répondre

0

Vous avez besoin d'un programme d'écoute de rappel pour vos données dans MainActivity ou toute activité que vous avez utilisée pour la visualisation. par exemple: faire l'interface comme celui-ci

interface RetrofitListener{ 
     onDataLoad(TimeZoneGoogle timeZoneGoogle); 
    } 

puis donner une référence à l'activité dont vous appelez la classe Retrofit

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); 
    } 
} 

et ici en classe 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) { 

      } 
     }); 
} 
}