我有一个包含由Baseadapter填充的自定义ListView的Activty。此ListView显示的数据一直在变化,因此我需要刷新List。
我通过在Thread中的ListViewAdapter上定期调用notifyDataSetChanged()并在活动暂停时将thread_paused设置为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;
}
我知道必须有一个更好的方法来做这个,也许是数据源上的某种监听器?
有什么建议吗?
答案 0 :(得分:1)
简单回答:只需在列表数据发生变化时更新列表。更新没有更改数据的列表是没有意义的,所以更改数据应该调用notifyDataSetChanged()
答案 1 :(得分:0)