2011-12-24 7 views
0

私はListActivityを持っており、多くのデータをThreadで処理する必要があります。仕事がbackgroundで行われている間に、Dialogを表示したいと思います。ただし、ビューの読み込みが完了するまでDialogは表示されません。私はこの方法を通常のactivityで使用しています(Dialogがポップアップし、ワーカーが開始し、ワーカーが終了し、Dialogが終了します)。作業が完了すると、にメッセージが送信され、viewがロードされ、Dialogが閉じられます。 、そのためListActivityとダイアログ

@Override 
public void onCreate(Bundle icicle) { 

    super.onCreate(icicle); 
    initViewProperties(); 
    dialogCode = 0; 
    showDialog(dialogCode); 

} 

@Override 
protected Dialog onCreateDialog(int id) { 

    int resID = getResources().getIdentifier(getCfrFile(), "raw", getPackageName());   
    progDialog = new ProgressDialog(this); 

    switch (dialogCode) { 
     case 0: 
      progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      progDialog.setMessage(getCurrentTitle()); 
      break; 
     case 1: 
      progDialog.setMessage("Loading CFR"); 
      break; 

     default: 
      break; 
    }  

    try { 
     // do the work here 
     xmlListRowFactoryHelper = new AcmListViewFactoryHelper(handler, resID, this, xpathBuilder(false), "title") ; 
     xmlListRowFactoryHelper.run(); 

    } catch (Exception e) { 

     e.printStackTrace(); 
    } 

    return progDialog; 

} 

final Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 

     int total = msg.getData().getInt("total");    

     progDialog.setProgress(total); 

     if (total <= 0){ 

      xmlListRowFactoryHelper.setState(AcmTableRowFactoryHelper.DONE); 
      // load the view here 
      loadListView();  
     } 
    } 
} 

答えて