Android: обновление списка после того, как поток загружает данные из сети
27201 просмотра
3 ответа
- Мне нравится, что мой графический интерфейс появляется сразу, когда пользователь запускает приложение.
- Затем некоторые данные (текст, картинки) загружаются в фоновом режиме (например, приложение YouTube).
- ListView и Галерея обновляются автоматически с этими новыми данными.
Я запускаю свой ListView, запускаю Thread и загружаю данные ... и затем ListView не обновляется! Несколько человек сказали мне, что я должен использовать notifyDataSetChanged()
. Но я не могу поместить эту команду в мою ветку (просто неизвестно).
Есть идеи?
Источник Размещён: 19.06.2019 02:32Ответы (3)
19 плюса
У меня такая же проблема ... и я очень обрадовался, когда наткнулся на этот вопрос. Но нет ответа? :-(
После того, как я оставил проблему на две недели, я нашел решение здесь :
Короче:
Цитата сверху ссылка:
Мы должны использовать объект Handler, потому что мы не можем обновить большинство объектов пользовательского интерфейса, находясь в отдельном потоке. Когда мы отправляем сообщение в обработчик, оно сохраняется в очередь и выполняется потоком пользовательского интерфейса как можно скорее.
После того, как вы проверите код, вы увидите, что говорит автор.
ПРИМЕЧАНИЕ. Даже с помощью обработчика Android может не позволить обновить объект представления из метода run () потока. Я получил эту ошибку:
05-31 02:12:17.064: ERROR/AndroidRuntime(881):
android.view.ViewRoot$CalledFromWrongThreadException:
Only the original thread that created a view hierarchy can touch its views.
Чтобы обойти это, я обновил массив данных в своем методе run () и использовал этот массив для обновления представления в методе handleMessage () обработчика.
Я надеюсь, что это помогает другим там.
Автор: CatDaaaady Размещён: 31.05.2009 03:384 плюса
Вы можете использовать slowAdapter для обновления представления:
SlowAdapter slowAdapter = new SlowAdapter(this);
list.setAdapter(slowAdapter);
slowAdapter.notifyDataSetChanged();
Автор: raj
Размещён: 30.04.2010 01:17
3 плюса
Просто нашел это сам, читая эту ветку и пробуясь.
Кратко: AsyncTask «s метод onProgressUpdate может коснуться вид : http://developer.android.com/reference/android/os/AsyncTask.html#onProgressUpdate (Прогресс ...)
Предыстория: мне нужно было вызывать запрос на моем курсоре, чтобы ListView продолжал обновляться, пока задача заполняла базу данных. Вызов запроса, выполненный в doInBackground, завершился неудачно с упомянутым CalledFromWrongThreadException, но тот же код в onProgressUpdate работает.
Автор: digitarald Размещён: 15.06.2010 05:51Вопросы из категории :
- android Насколько хорошо отражает эмулятор Android Phone?
- android Как сохранить состояние активности Android с помощью сохранения состояния экземпляра?
- android Android: доступ к дочерним представлениям из ListView
- android Как вызвать SOAP веб-сервис на Android
- android Как вы форматируете дату и время в Android?
- android Android: Получение имени файла с камеры?
- android Перезапуск активности при ротации Android
- android Проблема с нехваткой памяти при загрузке изображения в растровый объект
- android Отправьте приложение с базой данных
- android Как удалить контакт программно в Android
- listview Как я могу получить доступ к ListViewItems WPF ListView?
- listview Прокрутите список в WPF в определенную строку
- listview c # мерцание Listview при обновлении
- listview Добавление кнопки в ListView в WinForms
- listview Связывание ListView с свойством «IsSelected» ListViewItem
- listview Ленивая загрузка изображений в ListView
- listview Android: обновление списка после того, как поток загружает данные из сети
- listview Отмена SelectedIndexChanged в WinForm ListView
- listview Событие ListView ItemChecked
- listview Скрыть столбец списка просмотра wpf