2016-12-27 92 views
0

我的應用程序中有這種奇怪的現象。我正在使用下面列表中的代碼來用計數器的值填充TextView。每次視圖刷新計數器值的兩倍,我在每次循環後都將計數器設置爲0,但似乎不起作用。getView()int每次加載都會加倍

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View itemView = convertView; 
    if (itemView == null) { 
     itemView = inflater.inflate(R.layout.layouttitle, container, false); 
    } 
    for (myStruct singleItem : myData) { 
     counter++; 
    } 
    TextView totalsText = (TextView) itemView.findViewById(R.id.myTotalsText); 
    totalsText.setText("" + counter); 
    counter++; 
} 
+0

getView方法將在設備上創建新視圖時調用evey時間。不要在getview方法中添加計數器,它永遠不會給你想要的輸出 –

+0

你能解釋你想通過使用計數器變量來實現什麼 – Rahul

回答

3

getView()適配器的方法稱爲多次,也不能保證它得到了多少次調用,所以最好不要使用此方法對於任何計算或來回任何其他的任務,是有關項目的數量你的ListView。

爲什麼counter是一個全局變量,你能解釋一下嗎?

+1

是的,一般原則 - 一個名稱以'get'開頭的方法不應該改變可見的內部狀態你叫它的對象。 –

+0

是啊同意@DavidWallace,即使你試圖更新/更改getView()中的Adapter對象可能會導致問題。 – Rahul

+0

所以在一個get中顯示並且只在適配器級別改變。我想在我的視圖中添加一個總節,最好的方法是什麼,我正在考慮將其存儲在數據庫或數組中。 – user3175140

相關問題