ArrayAdapter getView()方法中的“convertView”参数是什么

时间:2010-12-07 22:12:11

标签: java android

有人可以告诉我convertView类的getView()方法中Adapter参数的用途是什么吗?

以下是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,   ListView ...)将应用默认布局参数,除非您使用   inflate(int,android.view.ViewGroup,boolean)指定根视图   并防止附着根。

     

参数

     

position - 项目在我们想要的视图的项目的数据集中的位置。

     

convertView - 如果可能,重用旧视图。注意:您应该检查此视图是否为非null且之前是否为适当的类型   使用。如果无法转换此视图以显示   正确的数据,这种方法可以创建一个新的视图。

     

parent - 此视图最终将附加到“返回”

的父级      

返回 - 对应于指定位置数据的视图。

1 个答案:

答案 0 :(得分:38)

你不应该自己打电话给那个方法。

Android ListView使用Adapter填充Views。显示ListView后,它会开始调用getView()来填充自己。当用户滚动时,应该创建新视图,因此为了提高性能,ListView会向Adapter发送一个旧视图,使其在convertView参数中不再使用。