私は3つのタブを持っていて、そのうちの2つのタブには改造呼び出しが必要です。3つのタブを持つタブレイアウトを使用している場合は、どの方法でレトロフィットコールを行う必要がありますか?
私は、onCreateViewメソッドでretrofit呼び出しを持つメソッドを呼び出そうとしました。 onResponseメソッドでは、受信したURLを介してイメージをロードしようとしました。しかし、私のアプリケーションをデバッグしているときに、onResponseが呼び出される前であっても、onCreateViewはビューを返しています。
どの方法で改造呼び出しをフラグメント化する必要がありますか?
public class Tab3Fragment extends Fragment {
private ImageView trailer_thumbnail;
private static final String preImgUrl = "http://img.youtube.com/vi/";
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab3_fragment, container, false);
trailer_thumbnail = (ImageView) rootView.findViewById(R.id.trailer_thumbnail);
updateTrailer();
/*if(DetailsActivity.movieTrailerList.size() != 0)
Picasso.with(getContext()).load(preImgUrl + DetailsActivity.movieTrailerList.get(0).getKey() + "/default.jpg").
placeholder(R.mipmap.ic_launcher).
error(R.mipmap.ic_launcher).
into(trailer_thumbnail);*/
return rootView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private void updateTrailer(){
final ProgressDialog mProgressDialog = new ProgressDialog(getContext());
mProgressDialog.setIndeterminate(true);
mProgressDialog.setMessage("Loading...");
mProgressDialog.show();
Retrofit retrofit = new Retrofit.Builder().
baseUrl(MainActivity.baseUrl).
addConverterFactory(GsonConverterFactory.create()).
build();
final RequestInterface requestInterface = retrofit.create(RequestInterface.class);
Call<MovieTrailerResponse> call1 = requestInterface.getMovieTrailers(list.get(index).getId(), MainActivity.apiKEy);
call1.enqueue(new Callback<MovieTrailerResponse>() {
@Override
public void onResponse(Call<MovieTrailerResponse> call, Response<MovieTrailerResponse> response) {
if (mProgressDialog.isShowing())
mProgressDialog.dismiss();
List<MovieTrailer> movieTrailerList = response.body().getResults();
Log.i("trailer", preImgUrl + movieTrailerList.get(0).getKey() + "/default.jpg");
if (movieTrailerList.get(0).getSite() == "YouTube")
Picasso.with(getActivity()).load(preImgUrl + movieTrailerList.get(0).getKey() + "/default.jpg").
into(trailer_thumbnail);
}
@Override
public void onFailure(Call<MovieTrailerResponse> call, Throwable t) {
}
});
}
これは私のTAB3フラグメントクラスである私はアプリをデバッグしていたときにAPI呼び出しがデータを受信する前に、onCreateView
は、トレーラーのタブが選択されていて、ビューが返される前であっても呼ばれています。だから私はprogressdialogでもイメージを読み込むことができません。実際、タブ2を選択すると進捗ダイアログが表示されます。
あなたの要求に依存しますが、私のアプリケーションをデバッグしているときに、onResponseが呼び出される前でもonCreateViewはビューを返しています。その問題は何ですか?あなたは正確に何をしようとしていますか? – OBX
私のイメージビューを読み込む前に、onCreateViewがビューを返すように、私のイメージビューをpicassoを使ってurlでロードしようとしています。 – potter13