Найти TableLeyout в потоке (из-за ProgressDialog) - PullRequest
0 голосов
/ 05 июня 2010

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

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

Мой код не подходит для:

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

1 Ответ

0 голосов
/ 05 июня 2010

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

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

...