У меня есть 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;
}
Я знаю, что должен быть лучший способ сделать это, может быть, какой-то слушатель на источнике данных?
Любые предложения?
Легкий ответ: просто обновите список, когда данные списка изменились. Обновление списка без изменений данных не имеет смысла, поэтому все изменения данных должны вызывать notifyDataSetChanged()
разрешил его с помощью трансляционного вещателя