Я новичок в ANDroid, и это мой первый тест Retrofit. Я использую Retofit для вызова API, который приведен ниже. Моя проблема: я получаю пустой экран при запуске приложения. Я хочу показать аудиофайлы в списке, а затем воспроизвести выбранный аудио. мой апи выглядит следующим образом: Использование Retrofit для вызова API
Я использую Дооснащение назвать это Api .Это то, что Restclient и RestInterface я использую `
public class RestClient {
private static RestInterface mInterface;
public static RestInterface getClient() {
if (mInterface == null) {
OkHttpClient okClient = new OkHttpClient();
okClient.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
return response;
}
});
Retrofit client = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverter(String.class, new ToStringConverter())
.client(okClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
mInterface = client.create(RestInterface.class);
}
return mInterface;
}
public interface RestInterface {
@GET("/bins/15oqx")
Call<AudioReturn> audioReturn();
}
адаптер используется, как это`
public class AudioAdapter extends
RecyclerView.Adapter<AudioAdapter.AudioViewHolder> {
Context mContext;
private ArrayList<AudioReturn.data> mAudioReturn = new ArrayList<>();
public AudioAdapter(Context context, ArrayList<AudioReturn.data> list) {
mContext = context;
mAudioReturn = list;
}
@Override
public int getItemCount() {
return mAudioReturn.size();
}
@Override
public void onBindViewHolder(AudioViewHolder holder, int position) {
AudioReturn.data current = mAudioReturn.get(position);
holder.track.setText(current.getTrack());
holder.trackname.setText(mAudioReturn.get(position).getTrackname());
}
@Override
public AudioAdapter.AudioViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.view_audio_files, viewGroup, false);
return new AudioAdapter.AudioViewHolder(itemView);
}
public void updateData(ArrayList<AudioReturn.data> datas) {
this.mAudioReturn = datas;
notifyDataSetChanged();
}
public class AudioViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.view_audio_file_Track_Number)
TextView track;
@Bind(R.id.view_audio_file_Audio_Name)
TextView trackname;
public AudioViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
и Pojo является `public class AudioReturn { ArrayList dataList = new ArrayList <>();
public class data {
String track, trackname;
public data(String track, String trackname) {
this.track = track;
this.trackname = trackname;
}
public String getTrack() {
return track;
}
public String getTrackname() {
return trackname;
}
}
public AudioReturn(ArrayList<data> dataList) {
this.dataList = dataList;
}
public ArrayList<data> getDataList() {
return dataList;
}
В результате я получаю пусто. Я звоню от деятельности:
AudioAdapter mAudioAdapter = new AudioAdapter(this, datas);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setAdapter(mAudioAdapter);
RestClient.RestInterface restInterface = RestClient.getClient();
Call<AudioReturn> audioReturnCall = restInterface.audioReturn();
audioReturnCall.enqueue(new Callback<AudioReturn>() {
@Override
public void onResponse(Response<AudioReturn> response) {
datas = response.body().getDataList();
mAudioAdapter.updateData(datas);
Toast.makeText(AudioActivity.this, "Success", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Throwable t) {
Toast.makeText(AudioActivity.this, "Failure", Toast.LENGTH_SHORT).show();
}
});
}`
Почему я не получаю URL аудио файлов. Есть ли другие методы? –
Для обеспечения правильной работы вам необходимо: –
Для ваших классов AudioReturn и Data: конструктор по умолчанию, а также геттеры и сеттеры для каждого поля. –