2010-06-05 4 views
0

В моей деятельности я получаю некоторые большие данные из Интернета, и, получая эти данные, я хочу показать пользователю ProgressDialog с вращающимся колесом. Что я могу сделать только с введением этого кода в поток, не так ли? проблема заключается в том, что после того, как я получаю эти данные, мне нужно вставить ее в мой tableLayout как TableRows, и кажется невозможным получить доступ к TableLayout из потока.Найти TableLeyout в потоке (из-за ProgressDialog)

Что я могу сделать, чтобы показать этот диалог прогресса и получить доступ к макету таблицы из потока? Есть ли какие-либо события, которые происходят в конце потока?

Мой код не для:

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

Мой полный код:

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(); 

ответ

0

Вы должны использовать AsyncTask

вы также заметите комментарии can use UI thread here рядом методов, где вы можете использовать UI.

+0

Отлично работает !!! – Shaulian