2014-04-27 47 views
0

你好我想及時刷新列表視圖,這裏我沒有添加/刪除任何行。我想刷新,因爲要刷新行中的現有數據。如何及時刷新listview內容

我正在這樣做,但這不適合我。

// Update the Message on the screen to help for troubleshooting. 
private void updateListView() { 
    // Callback to update the message in a second. 
    new CountDownTimer(30000, 1000) { 

     @Override 
     public void onTick(long arg0) { 
      adapter.notifyDataSetChanged(); 
      listView.invalidateViews(); 
      listView.refreshDrawableState(); 
     } 

     @Override 
     public void onFinish() { 

     } 
    }.start(); 
} 
+0

數據是否應該改變? – vjdhama

+0

什麼是您正在使用的DatasSet?你可以顯示適配器的getView()嗎? – akashsr

+0

@vjdhama沒有新行正在插入/刪除,只更新現有行 – Mick

回答

2

只使用一個處理器和notifyDataSetChanged:

final Handler handler = new Handler(); 
    final int REFRESH_EVERY_X_MS = 1000; 
    handler.postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      mAdapter.notifyDataSetChanged(); 
      handler.postDelayed(this, REFRESH_EVERY_X_MS); 
     } 
    }, REFRESH_EVERY_X_MS); 

,倘若你想停止(你應該),使用handler.removeCallbacks並設置完全相同的可運行的參數。

+0

notifyDataSetChanged();只能在UI線程中使用。 – Skynet

+0

這是否適合我的情況,因爲我沒有插入/刪除數據集中的行,只更新現有行中的數據? – Mick

+0

處理程序也可以在UI線程上工作,所以沒關係。只要記住當你不再需要時就停止清爽。 –