2010-12-07 60 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