作成しているアプリの場合FirebaseデータベースのデータでいっぱいになるRecyclerViewがあります。このRecyclerViewは、Viewpagerで使用されるフラグメントにもあります。私はそれを動作させることができますが、私が気づくのは、最初の実行時に断片がRecyclerViewのコンテンツを表示するのに時間がかかるため、ProgressBarを非同期仕事。RecyclerView.setAdapterが完了したらProgressBarを非表示にするAndroid
マイタスク:
private class ProgressTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
mProgressLinearLayout.setVisibility(View.VISIBLE);
}
@Override
protected Void doInBackground(Void... params) {
loadColleagueData();
mListener = initRealTime();
mAdapter = new CustomAdapter(mUserList, getActivity());
return null;
}
@Override
protected void onPostExecute(Void res) {
mRecyclerView.setAdapter(mAdapter);
mProgressLinearLayout.setVisibility(View.GONE);
}
}
さて、これは実際に動作します。 ProgressBarが表示され、完了したら再び非表示になります。しかし問題は、それが目に見えないほど短時間で済むことです。だから私はそれがデバッグのために動作することを知っているだけです。まだまだ時間がかかるのは、RecyclerViewが実際にコンテンツを表示していることです。
私の問題は、データベースからデータを取得するのはそれほど時間がかかることではなく、アダプタをRecyclerViewに設定してコンテンツを表示することはしばらく時間がかかることです。
私が理解したところでは、doInBackground
にアダプタを設定することはできません。これは、メインのUIスレッドの外側のビューでは何もできないためです。だから、コンテンツが自分のRecyclerViewに表示されたらProgressBarを隠す方法があるのだろうかと思っていたのですか?
:それとも、この火格子のライブラリを使用することができ、あなただけのファイルをコピーする必要がありますか? –