2010-06-05 3 views
0

Sur mon activité, je reçois des données volumineuses du web, et en obtenant ces données, je veux montrer à l'utilisateur un ProgressDialog avec roue tournante. Que je ne peux faire que de mettre ce code dans un fil, non? le problème est que, après im obtenir ces données, j'ai besoin de l'insérer dans ma tableLayout comme TableRows et il semble impossible à accéder à la TableLayout à partir du thread.Rechercher TableLeyout dans un fil (à cause du ProgressDialog)

Que puis-je faire pour afficher cette boîte de dialogue de progression et accéder à la disposition de la table à partir du fil de discussion? Y a-t-il un événement qui se produit à la fin du thread?

Mon code échoue pour:

_tableLayout.addView(_tableRowVar, new TableLayout.LayoutParams(
     LayoutParams.FILL_PARENT, 
     LayoutParams.FILL_PARENT)); 

Mon code complet est:

final ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "", 
      "Getting data.\nPlease wait...",true); 

new Thread() 
{ 
    public void run() 
    { 
     try 
     { 
      TableLayout _tableLayout; 
      _tableLayout = (TableLayout)MyActivity.this.findViewById(R.id.tableLayoutID); 

      List<String> data = getDataFromWeb(); 

      // Get the data and bind it into the table 
      publishTableLayoutWithTableRows(_tableLayout, data); 

     } 
     catch (Exception e) { 
      new AlertDialog.Builder(MyActivity.this) 
       .setMessage(e.getMessage()) 
      .show(); 
     } 
     dialog.dismiss(); 
    } 
}.start(); 

Répondre

0

Vous devez utiliser AsyncTask

vous remarquerez également des commentaires can use UI thread here à côté des méthodes où vous pouvez utiliser UI.

+0

Fonctionne très bien !!! – Shaulian