加载数据并填充到recyclerview时如何显示进度条?
Posted
技术标签:
【中文标题】加载数据并填充到recyclerview时如何显示进度条?【英文标题】:How to display progressbar while load data and fill into recyclerview? 【发布时间】:2018-02-12 17:22:33 【问题描述】:我想在加载数据和加载完成时在活动中显示进度条,隐藏进度条(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;
并用适配器填充回收器:
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中并且不显示进度条 如何解决这个问题?
【问题讨论】:
【参考方案1】:你有:
new loadTask().execute();
filterResult();
EDT_SEARCH.setText("");
此execute()
调用会立即返回,如果您执行 AsyncTask 等待结果,直到AsyncTask.doInBackground()
返回并调用AsyncTask.onPostExecuted()
才会有结果
这是filterResult();
耗时吗? ...如果主 UI 线程被阻塞,则 UI 将不会更新。
【讨论】:
"这个 filterResult(); 耗时吗?"是的......我想在加载数据时,用户看到进度条 如果 filterResult();阻塞 UI 线程 ProgressBar 不会显示或更新,您应该在单独的线程中运行 filterResult()。【参考方案2】:您希望此进度条如何工作?您可以在 Internet 上搜索 gif,一旦找到符合您条件的 gif,您必须在打开活动时显示它。当您填充您的 recyclerView 时,您将 gif 的可见性设置为 GONE。
【讨论】:
以上是关于加载数据并填充到recyclerview时如何显示进度条?的主要内容,如果未能解决你的问题,请参考以下文章
将解析的 JSONArray 加载到 recyclerView
将 GeoFire 查询加载到 RecyclerView 时应用程序崩溃
单击 RecyclerView 后使用 Firebase 实时数据库填充详细信息活动
从 Firebase android kotlin 获取数据时如何显示加载的项目