2014-01-11 3 views
0

Я звоню notifydatasetchanged, и для обновления ui требуется некоторое время. Я не могу показать индикатор выполнения, поскольку он закрывается, прежде чем андроид обновит ui. Может ли кто-нибудь предложить мне решение?Индикатор выполнения во время уведомления Adapderdatasetchanged

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(); 
      } 
     }); 
Смежные вопросы