View listItemView = convertView;
if(listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
我无法理解上面的代码。这段代码是制作自定义ArrayAdapter的一部分。以下是特定项目的Custom ArrayAdapter代码。
public class AndroidFlavorAdapter extends ArrayAdapter<AndroidFlavor> {
private static final String LOG_TAG = AndroidFlavorAdapter.class.getSimpleName();
public AndroidFlavorAdapter(Activity context, ArrayList<AndroidFlavor> androidFlavors) {
super(context, 0, androidFlavors);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if(listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
AndroidFlavor currentAndroidFlavor = getItem(position);
TextView nameTextView = (TextView) listItemView.findViewById(R.id.version_name);
nameTextView.setText(currentAndroidFlavor.getVersionName());
TextView numberTextView = (TextView) listItemView.findViewById(R.id.version_number);
numberTextView.setText(currentAndroidFlavor.getVersionNumber());
ImageView iconView = (ImageView) listItemView.findViewById(R.id.list_item_icon);
iconView.setImageResource(currentAndroidFlavor.getImageResourceId());
return listItemView;
}
}
为什么listItemView是用convertView赋值的。为什么检查它是否为null以及LayoutInflator的用法。
答案 0 :(得分:1)
如果列表适配器中有10个项目,getView
将被调用10次,位置0到9.基本上,getView
方法会创建一个在特定位置膨胀的视图(即.0到9)。如果在UI中发生某些事情(例如滚动),将重复getView
方法。起初convertView
是null
,因为没有任何东西膨胀,你现在要膨胀。下次以后convertView
不会为空(因为您已经充气),而您所要做的就是更新convertView
的内容。他们已将convertView
分配给本地变量listItemView
并对其进行了更改。
答案 1 :(得分:0)
convertView是listView中的一项。
getView它将重复您的custum布局+ convertView
这是您自定义listView的一个项目
答案 2 :(得分:0)
基本上getView
方法是每次需要为任何ListView
位置绑定自定义布局时调用的方法。
代码:View listItemView = convertView;
只是帮助您了解converView
是您的列表项视图。因此,如果在该位置为空,则getView
方法会将ListView
位置与您的自定义布局绑定。