Заполнение listView Async - PullRequest
       5

Заполнение listView Async

0 голосов
/ 02 декабря 2011

Это моя проблема:

Я получаю GPS-координаты телефона и использую их с Google Directions API для определения расстояния между телефоном и некоторыми зданиями из моего города.Положение зданий хранится в файле XML.

Я использую asyncTask, чтобы зациклить все координаты зданий и получить расстояние между зданием и телефоном из API Google.

Проблема в том, что иногда, когдаУ меня есть много зданий, требующих много времени, чтобы завершить весь запрос и после этого показать список, и я хотел бы знать, как это сделать:

Как я могу обновлять listView при каждом завершении запроса:

Например: в первый раз список пуст, я делаю запрос в Google API и получаю 1 элемент в списке, а затем еще один запрос.Таким образом, мне не нужно ждать до тех пор, пока все запросы не будут выполнены.

Я думаю, что если у меня есть 20 координат зданий, это не решение для создания 20 экземпляров асинхронной задачи.

СпасибоТы, Каталин

1 Ответ

0 голосов
/ 02 декабря 2011

Самый простой способ, которым IMO вызывает notifyDataSetChanged () в runOnUiThread ():

private class DownloadAsyncTask extends AsyncTask<Void, Recording, Void> {

  protected Void doInBackground(Void... parms) {
    for (DownloadTask task: tasks) {
      DownloadData downloadData = downloadSomething(task);
      runOnUiThread(new Runnable() {
        public void run() {
          listAdapter.add(downloadData);
          listAdapter.notifyDataSetChanged();
        }
      });
    }
  } // end of doInBackground()
}

Надеюсь, что поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...