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("");