如何从Retrofit返回方法中的数据我很困惑?

时间:2017-09-05 05:15:32

标签: retrofit2

我很困惑你能帮助我吗?我读过类似的问题,但对我来说并不清楚,先谢谢你的耐心和关注。

我想返回使用Retrofit从API调用中检索到的onCreate数据。这是我的功能,我称之为Retrofit。

private void loadTimeZoneAPI(double latitude,double longitude,long timestamp,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) {

        }
    });
}

我如何将timeZone值返回onCreate,我将用于计算。

1 个答案:

答案 0 :(得分:0)

您需要为MainActivity中的数据或您用于查看的任何活动提供回调侦听器。 例如:make interface like this

interface RetrofitListener{
        onDataLoad(TimeZoneGoogle timeZoneGoogle);
    }

然后在Activity中提供一个引用,你可以从中调用Retrofit class

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

            }
        });
}
}