Я пытаюсь получить данные, которые я анализирую, из метода onResponse через Callback.Вот мой ApiClient:
public class ApiClient implements Callback<Map<String, Channel>> {
private ChannelCallback listener;
static final String BASE_URL = "https://www.radyoodtu.com.tr/";
public void start(ChannelCallback listener) {
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();
listener.setChannels(body);
List<Channel> channels = new ArrayList<>(body.values());
for (Channel channel : body.values()) {
System.out.println(channel.getSong());
}
}
}
@Override
public void onFailure(retrofit2.Call<Map<String, Channel>> call, Throwable t) {
//TODO
}
}
и это класс, который я пытаюсь получить данные:
public class Radio implements ChannelCallback {
private ApiClient apiClient = new ApiClient();
public Radio(){
apiClient.start(this);
}
@Override
public void setChannels(Map<String, Channel> body) {
this.apiClient.onResponse(body); // NOT WORKING
}
}
вот мой интерфейс:
public interface ChannelCallback {
void setChannels(Map<String, Channel> body);
}
мне нужно получить данные тела onResponse для класса Radio, который я сейчас использую.В классе Radio мне нужно создать Список объектов каналов с теми данными, которые мне нужны, но я даже не могу получить данные, поэтому я даже не могу создать этот список.Я вообще не знаю, как манипулировать данными из слушателя, и я не знаю, как мне получить доступ к тому слушателю, которого я использую в ApiClient в классе Radio.