Я пытаюсь использовать значения, полученные из моего запроса, но не могу их использовать, потому что void onReponse метод.Значения, которые я получаю, остаются только в методе onResponse.Я знаю, что это потому, что это void, и я ничего не могу вернуть, но есть ли способ заполнить объект полученными значениями?
Вот мой класс ApiClient:
public class ApiClient implements Callback<Map<String, Channel>> {
static final String BASE_URL = "some url";
public void start() {
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
RestInterface restInterface = retrofit.create(RestInterface.class);
Call<Map<String, Channel>> call = restInterface.getChannels();
call.enqueue(this);
}
@Override
public void onResponse(retrofit2.Call<Map<String, Channel>> call, Response<Map<String, Channel>> response) {
System.out.println(response.code());
if(response.isSuccessful()) {
Map<String, Channel> body = response.body();
List<Channel> channels = new ArrayList<>(body.values());
for (Channel channel : body.values()) {
System.out.println(channel.getSong());
}
...
Что мне нужно сделать, это создать объекты Channel со значениями, которые я получаю из onResponse.Я пытался использовать его в другом классе, как это:
ApiClient apiClient = new ApiClient();
apiClient.start();
, но он все еще работает только в onResponse.Мне нужно создать объекты Channel, такие как:
Channel channel = new Channel(channels(1));
это, но в другом классе, не в ApiClient.