Android 如何在加载数据并填写到recyclerview时显示progressbar?
我想在加载数据时在活动中显示进度条,加载完成后,进度条将隐藏(消失)! 并尝试以下代码:(单击按钮加载数据) 和任务方法:Android 如何在加载数据并填写到recyclerview时显示progressbar?,android,progress-bar,loaddata,Android,Progress Bar,Loaddata,我想在加载数据时在活动中显示进度条,加载完成后,进度条将隐藏(消失)! 并尝试以下代码:(单击按钮加载数据) 和任务方法: private class loadTask extends AsyncTask<String, Integer, Boolean> { @Override protected void onPreExecute() { PROGRESS_LOADER.setVisibility(View.VISIBLE); su
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;
}
}
但数据会加载并填充到recyclerview中,并且不会显示进度条
如何解决此问题?您有:
new loadTask().execute();
filterResult();
EDT_SEARCH.setText("");
此execute()
调用以中间方式返回,如果执行异步任务等待结果,则直到AsyncTask.doInBackground()
返回并调用AsyncTask.onPostExecuted()
后才会有结果
这是
filterResult()代码>耗时。。。如果主UI线程被阻止,则UI将不会更新。您希望此进度条如何工作?您可以在Internet上搜索gif,一旦找到符合您条件的gif,您就必须在打开活动时显示它。填充recyclerView时,您将gif的可见性设置为已消失。“这是filterResult();耗时吗?”是。。。我希望在加载数据时,用户查看进度barIf filterResult();块UI线程ProgressBar将不会显示或更新,您应该在单独的线程中运行filterResult()。
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());
}
}
new loadTask().execute();
filterResult();
EDT_SEARCH.setText("");