데이터를로드하는 동안 작업 진행률 표시 줄을 표시하고로드가 완료되면 진행률 표시 줄을 숨기려면 (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(); UI 스레드를 차단하면 ProgressBar가 표시되거나 업데이트되지 않으므로 분리 된 스레드에서 filterResult()를 실행해야합니다. –