私はANdroidの新機能であり、これはRetrofitの最初のテストです。以下のようにRetofitを使用してAPIを呼び出しています。 私の問題は、アプリケーションを実行すると空白の画面が表示されます。リストにオーディオファイルを表示してから、選択したオーディオを再生したいとします。私のAPIは次のようになります。Retrofitを使用してAPIを呼び出す
私は、このAPI .Thisを呼び出すためにレトロフィットを使用しています私は `
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();
}
を使用しています何RestclientとRestInterfaceで使用アダプタは、この`
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;
}
結果は空白です。私はActivityから呼び出しています:あなたのJSONで
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();
}
});
}`
:によって
そして、あなたのAudioReturnクラス。他の方法はありますか? –
正常に動作させるには、次のものが必要です。 –
あなたのクラスのAudioReturnとData:デフォルトのコンストラクタと各フィールドのgetterとsetter。 –