Adapder的notifydatasetchange期间的进度条

时间:2014-01-11 06:46:12

标签: android android-arrayadapter notifydatasetchanged

我正在调用notifydatasetchanged并且需要一段时间才能更新ui。在android更新ui之前,我无法显示进度条,因为它已关闭。 有谁能建议我解决方案?

private class DateSelectionProcessor extends AsyncTask<Void, Void, Void>
{
    ProgressDialog pd;
    DateSelectionProcessor()
    {
    }

    @Override
    protected void onPreExecute()
    {
        pd = new ProgressDialog(ActivityHome.this);
        pd.setMessage("Adding your shift. Please Wait..");
        pd.setCancelable(false);
        pd.setIndeterminate(true);
        pd.show();
    }

    @Override
    protected Void doInBackground(Void... params)
    {
        return null;
    }

    @Override
    protected void onProgressUpdate(Void... params)
    {
    }

    @Override
    protected void onPostExecute(Void param)
    {
        if (mnSelectedShiftTemplateIndex != -1)
        {
            int nSelectedShiftTemplateID = malnShiftTemplateIDs.get(mnSelectedShiftTemplateIndex);

            if ((mnRecentShiftID >= 0) && (mnRecentShiftTemplateID == nSelectedShiftTemplateID) && (mnRecentShiftYear == mnSelectedYear) && (mnRecentShiftMOY == mnSelectedMOY) && (mnRecentShiftDOM == mnSelectedDOM))
            {
                DBHelper.getInstance(ActivityHome.this).deleteShiftInstance(mnRecentShiftID);
                mnRecentShiftID = -1;

                Toast.makeText(ActivityHome.this, getString(R.string.msg_recent_shift_deleted), Toast.LENGTH_SHORT).show();
            }
            else
            {
                placeShiftInstance(nSelectedShiftTemplateID);
            }
        }
        mCalendarAdapter.setDateSelected(mnSelectedYear, (mnSelectedMOY - 1), mnSelectedDOM);
        mCalendarAdapter.notifyDataSetChanged();
        updateDailyDetails();
        pd.dismiss();
    }
}

1 个答案:

答案 0 :(得分:0)

Atlast我找到了一个可行的解决方案:

mgvCalendar.post(new Runnable()
        {
            @Override
            public void run()
            {
                if (mProgressDialog != null)
                    mProgressDialog.dismiss();
            }
        });
相关问题