Android: Обновление ListView после нагрузок темы данных из сети

голоса
15
  1. Мне нравится, что мой GUI появляется сразу, когда пользователь запускает приложение.
  2. Тогда некоторые данные (текст, картинки) загружается в фоновом режиме (как приложение YouTube).
  3. ListView и Галерея обновляются автоматически с этим новым данные.

Я посвящаю мой ListView, начать тему и загрузить данные ... а затем ListView не обновляется! Несколько человек сказали мне , что я должен использовать notifyDataSetChanged(). Но я не могу поместить эту команду в моей Thread (только неизвестно).

Есть идеи?

Задан 16/03/2009 в 20:03
источник пользователем
На других языках...                            


3 ответов

голоса
19

У меня эта же проблема ... и я погорячился, когда я наткнулся на этот вопрос. Но нет ответа? :-(

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

Короче:

Цитата выше ссылке:

Мы должны использовать объект Handler, потому что мы не можем обновить большинство объектов пользовательского интерфейса в отдельном потоке. Когда мы посылаем сообщение обработчика будет спасаются в очередь и получить выполняются в потоке пользовательского интерфейса как можно скорее.

После того, как вы проверить код , который вы видите получить то , что автор говорит.
Примечание: Даже с обработчиком, Android может не позволить вам обновить объект вида из выполнения потока () метод. Я получил эту ошибку:

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

Я надеюсь, что это помогает другим там.

Ответил 31/05/2009 d 04:38
источник пользователем

голоса
4

Вы можете использовать slowAdapter, чтобы обновить вид:

SlowAdapter = new SlowAdapter(this);

list.setAdapter(SlowAdapter);
SlowAdapter.notifyDataSetChanged();
Ответил 30/04/2010 d 14:17
источник пользователем

голоса
3

Только что нашел это сам, читая эту тему и пытается вокруг.

Кратко: AsyncTask «s метод onProgressUpdate может коснуться вид : http://developer.android.com/reference/android/os/AsyncTask.html#onProgressUpdate (Прогресс ...)

Справочная информация : Мне нужно позвонить Requery на мой курсор так ListView продолжал обновляемой в то время как задача заполняет базу данных. Requery вызов , сделанный в doInBackground не удалось с упомянутым CalledFromWrongThreadException , но тот же код в onProgressUpdate работ.

Ответил 15/06/2010 d 06:51
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more