Лучший способ обновить ListView?

1

У меня есть Activty, содержащий пользовательский ListView, заполненный Baseadapter. Данные, отображаемые этим ListView, меняются все время, поэтому мне нужно обновить List.

Я делаю это, периодически вызывая notifyDataSetChanged() в моем ListViewAdapter в потоке и устанавливая thread_pauseed true, если действие приостановлено. Уродливо, черт возьми.

public void StartListener(){
  new Thread(new Runnable() {
      public void run() {
          while(!thread_paused){
              try {
                 Thread.sleep(5000);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
              runOnUiThread(new Runnable() {
                 public void run() {
                    ListViewA.notifyDataSetChanged();
                    Log.v("refresh", "refreshed view");
             }
        });
      }
     } 
  }).start();
}

@Override
public void onPause(){
  super.onPause();
  thread_paused=true;
}

Я знаю, что должен быть лучший способ сделать это, может быть, какой-то слушатель на источнике данных?

Любые предложения?

Теги:
multithreading
listview

2 ответа

1

Легкий ответ: просто обновите список, когда данные списка изменились. Обновление списка без изменений данных не имеет смысла, поэтому все изменения данных должны вызывать notifyDataSetChanged()

  • 0
    Итак, данные изменены Сервисом. Может быть, связывание Activity с Сервисом и передача пользовательского Listener поможет?
0

разрешил его с помощью трансляционного вещателя

Ещё вопросы

Сообщество Overcoder
Наверх
Меню