データのロード中に進行状況バーを表示したい場合や、ロード完了時にプログレスバーを非表示にする(GONE)! と、このコードを試してみてください(ボタンはデータをロードするためにクリック)データをロードしてrecyclerviewに書き込むときにプログレスバーを表示する方法は?
private void allMoment() {
BTN_ALL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
TBL_MOMENT = new TableMoment(DB_HELPER);
// MOMENTS = TBL_MOMENT.MOMENT_LIST();
new loadTask().execute();
filterResult();
EDT_SEARCH.setText("");
} catch (Exception e) {
displaySnackBar(v, "خطا:" + "\n" + e.toString());
}
}
});
}
とタスク方法:
private class loadTask extends AsyncTask<String, Integer, Boolean> {
@Override
protected void onPreExecute() {
PROGRESS_LOADER.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@Override
protected void onPostExecute(Boolean result) {
PROGRESS_LOADER.setVisibility(View.GONE);
adapter.notifyDataSetChanged();
super.onPostExecute(result);
}
@Override
protected Boolean doInBackground(String... params) {
MOMENTS = TBL_MOMENT.MOMENT_LIST();
try {
Thread.sleep(3000);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
とdapterとリサイクルを埋める:
private void filterResult() {
try {
adapter = new HistoryAdapter(this, MOMENTS);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
} catch (Exception e) {
displayToast(this, "خطای آداپتر:" + "\n" + e.toString());
}
}
が、データがロードになると塗りつぶしrecyclerviewに入り、進行状況バーを表示しない この問題を解決するには?
"このフィルタの結果(時間)はかかりますか?"はい...私は、データがロードされている間、ユーザーが進捗バーを参照したい場合 –
if filterResult(); ProgressBarが表示または更新されないUIスレッドをブロックする場合は、filterResult()を別のスレッドで実行する必要があります。 –