【问题标题】:Refreshing custom List withing AsyncTask android使用 AsyncTask android 刷新自定义列表
【发布时间】:2014-07-15 10:34:29
【问题描述】:

我有一个自定义列表,我想在单击操作栏按钮时刷新它。 此列表位于片段内。

我想在列表刷新之前显示一个 ProgressBar。

目前我正在这样做:-

private class RefreshList extends AsyncTask<Void, Void, Void>
{

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        if(refDialog!=null)
        {
            refDialog.dismiss();
        }
    }

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();

        if(refDialog!=null)
        {
            refDialog =null;
        }
        refDialog =  WaitProgressFragment.newInstance();

        refDialog.show(getFragmentManager(), "Wait");


    }

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub
        //stagAdaper.notifyDataSetChanged();

        itemsAdapter.notifyDataSetChanged();



        return null;
    }

}

但我得到了这个错误

Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

如何在显示进度对话框时刷新列表?

【问题讨论】:

标签: android list android-asynctask refresh progressdialog


【解决方案1】:

itemsAdapter.notifyDataSetChanged();

onPostExecute.

notifyDataSetChanged 是一个 UI 操作,doInBackground 不适用于 UI 线程,而 onPostExecute 可以。

【讨论】:

  • 我试过了,但是 ProgressDialog 没有显示
  • 你需要在 doInBackground 中做一些事情。如果您只是测试进度对话框,请在 doInBackground 中休眠。
【解决方案2】:

您必须将后台任务的部分移动到 UI 线程,因此在 onPostExecute 方法中通知 itemsAdapter

  @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        itemsAdapter.notifyDataSetChanged()

        if(refDialog!=null)
        {
            refDialog.dismiss();
        }
    }

【讨论】:

  • 我试过了。但随后 ProgressDialog 不显示
  • @user3146095 在关闭对话框之前调用 itemsAdapter.notifyDataSetChanged(),请参阅编辑后的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多