2010-12-07 76 views
37

有人可以告訴我什麼convertView參數用於Adapter類的getView()方法嗎?什麼是ArrayAdapter中的「convertView」參數getView()方法

下面是here一個示例代碼看法:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
     LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.row, null); 
    } 
    Order o = items.get(position); 
    if (o != null) { 
     TextView tt = (TextView) v.findViewById(R.id.toptext); 
     TextView bt = (TextView) v.findViewById(R.id.bottomtext); 
     if (tt != null) { 
      tt.setText("Name: "+o.getOrderName());       } 
     if(bt != null){ 
      bt.setText("Status: "+ o.getOrderStatus()); 
     } 
    } 
    return v; 
} 

,我們應該通過convertView傳遞什麼?

什麼我發現,take from here

把那在 數據集的指定位置顯示的數據視圖。您可以手動創建視圖,也可以從 XML佈局文件中對其進行充氣。當視圖膨脹時,父視圖(GridView,GridView, ListView ...)將應用默認佈局參數,除非您使用膨脹(int,android.view.ViewGroup,布爾值)來指定根視圖 並防止附件根。

參數

位置 - 項目的適配器的數據集,我們希望其觀點的項目中的位置。

convertView - 舊的視圖重用,如果可能的話。注意:您應該在 正在使用之前檢查該視圖是否爲非空和適當的類型。如果無法將此視圖轉換爲顯示 正確的數據,則此方法可以創建新視圖。

- 在指定位置相對應的數據的視圖 - 這個視圖最終將被附連到返回

返回父。

回答

38

您不應該自己調用該方法。

Android的ListView使用Adapter來填充Views。當顯示ListView時,它開始調用getView()來填充它自己。當用戶滾動新視圖時應該創建,因此爲了提高性能,ListView發送Adapter舊視圖,它在convertView參數中不再使用。

+1

我不太明白這一點「當用戶滾動一個新的視圖應該被創建,所以爲了提高性能,ListView向適配器發送一箇舊視圖,它不再在convertView參數中使用它。」你說`ListView`不會一次填充所有視圖? – Tarik 2010-12-07 22:20:41

相關問題