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

Tar*_*rik 38 java android

有人能告诉我在类convertViewgetView()方法中使用了什么参数Adapter

下面是一个示例代码采取从这里:

@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;
}
Run Code Online (Sandbox Code Playgroud)

我们应该通过convertView什么?

我发现了什么,从这里开始:

获取一个视图,显示数据集中指定位置的数据.您可以手动创建View,也可以从XML布局文件中对其进行充气.当View膨胀,除非你使用膨胀(INT,android.view.ViewGroup,布尔值)指定根视图,并防止附着到根父视图(GridView控件,ListView控件...)将应用默认的布局参数.

参数

position - 项目在我们想要的视图的项目的适配器数据集中的位置.

convertView - 如果可能,重用旧视图.注意:在使用之前,应检查此视图是否为非null且类型是否合适.如果无法转换此视图以显示正确的数据,则此方法可以创建新视图.

parent - 此视图最终将附加到"返回"的父级

返回 - 与指定位置的数据对应的视图.

Mac*_*rse 38

你不应该自己调用这种方法.

Android ListView使用an Adapter填充自己Views.当ListView显示时,它开始调用getView()以填充自身.当用户滚动一个新视图应创建,所以对于性能ListView发送Adapter一个老观点,即它不应用于任何更多convertViewPARAM.

  • 对此的一个重要副作用是在ListView的Views中存储任何状态信息必然是一场灾难.确保在适配器中存储任何每项目状态,而不是在视图中. (12认同)
  • @jib:或者您可以正确处理视图更改状态. (3认同)