2014-08-28 54 views
1

假設我在android中有一個ListView,並且它的適配器綁定了一個包含兩個元素的arraylist爲什麼ListView的getVIew方法在android中被調用很多次

但是我發現一個問題,當我開始activity其中ListView所在地,arrayAdaptergetView方法被調用多次(至少4倍)。但是我arraylist僅持有2 elements.And實際finnaly屏幕上只出現兩個元素。

所以這裏是我的問題:爲什麼getView方法被調用的次數比應該多?

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, 
      ViewGroup parent) { 
     View rowView=convertView; 
     if(rowView==null) 
     { 
      Log.d("rowview==null is true", Integer.toString(childPosition)); 
        } 
     else{ 
      Log.d("rowview==null is false", Integer.toString(childPosition)); 
     } 

大約有4登錄logcat的。從我的角度來看,它應該是2

任何幫助表示讚賞。

+0

檢查:http://stackoverflow.com/questions/2618272/custom-listview-adapter-getview-method-being-called-multiple-times-and-in-no-co – 2014-08-28 12:19:48

回答

1

爲了測量/佈局的目的,可以首先請求這些項目,然後再重新實際附加到列表視圖。

如果您的列表視圖位於需要多個度量/佈局傳遞的佈局中,例如帶有權重的LinearLayout,那麼您將在適配器中獲得更多的視圖請求。

要了解爲什麼調用getView()方法,請在其中放置一個調試器斷點並檢查調用堆棧。

+0

謝謝,現在的問題是明確的 – 2014-08-28 12:27:27

相關問題