Android工作室;将视图膨胀并保存到 convertView 中有什么意义?
Android Studio; What is the point of inflating and saving a view into convertView?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null){
convertView = ContactViewActivity.this.getLayoutInflater().inflate(R.layout.contact_view_field_row,
parent, false);
}
String value = (String)getItem(position);
TextView fieldValue = (TextView)convertView.findViewById(R.id.contact_view_row_value);
fieldValue.setText(value);
return convertView;
}
以上代码取自 BaseAdapter class。那么将膨胀视图设置为convertView有什么意义呢? getView 的全部目的是在没有视图的情况下创建一个视图,给它属性,然后 return 它可以显示在 ListView 的应用程序中,对吧?那么为什么不直接说 findViewById(R.id.contact_view_row_value); 呢?我的意思是我们真正用 layoutInflater 做什么?我认为既然我们将它设置为等于 convertView,就不需要键入 convertView.findViewById。我的意思是它已经等于一个膨胀的 XML 文件对吧?我在这里很困惑,我真的很感激一些澄清。
因为 convertView
是可以重复使用的东西,虽然在运行时你不知道是否正在为你提供一个现有的 View
其数据必须更新,或者如果一个新的 View
需要充气。
当您的应用程序启动时,您需要 inflate
您的 Views
以便所有数据都显示在您的 ListView
中。 Inflate 意味着将资源 XML 解析为图形对象,并为其提供 Android 的 Context
,因此它成为具有在图形层次结构上呈现和交互的潜力。稍后在应用程序中,Android 试图通过向您传递一个先前已膨胀的 View
来帮助您节省资源并避免不必要的 inflation;这就是我们检查 convertView
是否不等于 null
的原因。如果不是,您可以 将现有 View
转换 为显示与当前索引相关的数据的内容。
但是,值得注意的是 ListView
现在已弃用。尝试使用 RecyclerView
代替,这种行为更明显。这是一个 .
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null){
convertView = ContactViewActivity.this.getLayoutInflater().inflate(R.layout.contact_view_field_row,
parent, false);
}
String value = (String)getItem(position);
TextView fieldValue = (TextView)convertView.findViewById(R.id.contact_view_row_value);
fieldValue.setText(value);
return convertView;
}
以上代码取自 BaseAdapter class。那么将膨胀视图设置为convertView有什么意义呢? getView 的全部目的是在没有视图的情况下创建一个视图,给它属性,然后 return 它可以显示在 ListView 的应用程序中,对吧?那么为什么不直接说 findViewById(R.id.contact_view_row_value); 呢?我的意思是我们真正用 layoutInflater 做什么?我认为既然我们将它设置为等于 convertView,就不需要键入 convertView.findViewById。我的意思是它已经等于一个膨胀的 XML 文件对吧?我在这里很困惑,我真的很感激一些澄清。
因为 convertView
是可以重复使用的东西,虽然在运行时你不知道是否正在为你提供一个现有的 View
其数据必须更新,或者如果一个新的 View
需要充气。
当您的应用程序启动时,您需要 inflate
您的 Views
以便所有数据都显示在您的 ListView
中。 Inflate 意味着将资源 XML 解析为图形对象,并为其提供 Android 的 Context
,因此它成为具有在图形层次结构上呈现和交互的潜力。稍后在应用程序中,Android 试图通过向您传递一个先前已膨胀的 View
来帮助您节省资源并避免不必要的 inflation;这就是我们检查 convertView
是否不等于 null
的原因。如果不是,您可以 将现有 View
转换 为显示与当前索引相关的数据的内容。
但是,值得注意的是 ListView
现在已弃用。尝试使用 RecyclerView
代替,这种行为更明显。这是一个