有人可以告诉我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 - 此视图最终将附加到“返回”
的父级返回 - 对应于指定位置数据的视图。
答案 0 :(得分:38)
你不应该自己打电话给那个方法。
Android ListView
使用Adapter
填充Views
。显示ListView
后,它会开始调用getView()
来填充自己。当用户滚动时,应该创建新视图,因此为了提高性能,ListView
会向Adapter
发送一个旧视图,使其在convertView
参数中不再使用。