2014-07-06 76 views
0

當我的代碼滿足某些條件時,我需要更新我的ListView(每行包含多個視圖)的每一行中的僅一個View。有沒有一種方法只定位更新的視圖?Android:更新列表視圖行

我試過設置一個標誌,然後調用notifyDataSetChanged(),但是,我怎麼知道notifyDataSetChanged()已完成調用getView(...)目前可見的項目?

+0

當前可見的視圖將立即更新。但是,該標誌應保持其狀態,因爲適配器可能會在進入和退出屏幕時重新繪製視圖。 –

+0

由於實現的原因,在視圖更新之後,應立即忽略標誌AND。該標誌表示只有一些行內容需要更新。 –

回答

0
Boolean updateViewsFlag = true; 

//內部getView():

if(updateViewsFlag) { 
    //Suppose you want to update some text in a textView 
    textView.setText("updatedText"); 
    //Also, update the corresponsing value in the Collection, 
    //you're using to generate the ListView. 
    //Consider an ArrayList<String> for this case. 
    arrayList.set(position, "updatedText"); 
} else { 
    textView.setText(arrayList.get(position)); 
} 

要找出是否notifyDataSetChanged()完成或沒有,檢查如果當前視圖的位置等於該ArrayList的大小。如果是,則表示所有視圖都已刷新,您可以將該標誌設置爲false。但請記住,getView()將被執行多次,因此請確保您不要不必要地更改標誌值。