2014-01-11 21 views
0

我在調用notifydatasetchanged,它需要一段時間才能更新UI。我無法顯示進度條,因爲它在android更新ui之前會關閉。 任何人都可以給我一個解決方案嗎?Adapder的notifydatasetchanged中的進度條

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

@ shree202 - 我添加了代碼。 –

+0

你在哪裏關閉你的進度對話框? –

回答

0

Atlast我發現這是一個可行的解決方案:

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