刷新ListView的更好方法是什么?

时间:2010-12-22 11:57:34

标签: android multithreading listview

我有一个包含由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;
}

我知道必须有一个更好的方法来做这个,也许是数据源上的某种监听器?

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

简单回答:只需在列表数据发生变化时更新列表。更新没有更改数据的列表是没有意义的,所以更改数据应该调用notifyDataSetChanged()

答案 1 :(得分:0)

使用broadcastreceiver

解决了这个问题