如何在加载数据时显示进度条并填入recyclerview?

时间:2017-09-04 12:57:35

标签: android progress-bar loaddata

我想在加载数据时在活动中显示进度条,加载完成时,进度条要隐藏(GONE)! 并尝试此代码:(按钮单击以加载数据)

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中,并且不会显示进度条 如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

你有:

 new loadTask().execute();
 filterResult();
 EDT_SEARCH.setText("");

execute()调用会立即返回,如果您执行AsyncTask等待结果,那么在AsyncTask.doInBackground()返回并调用AsyncTask.onPostExecuted()之前,您不会得到结果

filterResult();耗时吗? ...如果主UI线程被阻止,则UI将不会更新。

答案 1 :(得分:0)

您希望此进度条如何运作?您可以在Internet上搜索gif,一旦找到符合条件的gif,就必须在打开活动时显示它。填充recyclerView时,将gif的可见性设置为GONE。