【发布时间】:2010-12-07 22:12:11
【问题描述】:
谁能告诉我Adapter 类的getView() 方法中的convertView 参数是做什么用的?
这是来自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:
获取一个在指定位置显示数据的View 数据集。您可以手动创建视图或从 XML 布局文件。当 View 膨胀时,父 View (GridView, ListView...) 将应用默认布局参数,除非您使用 inflate(int, android.view.ViewGroup, boolean) 指定根视图 并防止附着在根上。
参数
position -- 在适配器的数据集中我们想要查看的项目的项目的位置。
convertView -- 如果可能的话,要重用的旧视图。注意:您应该在之前检查此视图是否为非空且类型合适 使用。如果无法将此视图转换为显示 正确的数据,这个方法可以创建一个新的视图。
parent -- 此视图最终将附加到 Returns 的父级
returns -- 指定位置数据对应的View。
【问题讨论】: