我正在为 ListView 编写一个自定义适配器,它扩展了 BaseAdapter 并在此方法中
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (vi == null)
vi = inflater.inflate(R.layout.x, null);
}
为什么是支票if(vi==null)
执行。getView()
当 row 进入屏幕的可见区域时,会调用 row 。所以vi
将null
每次getview()
叫做?那么为什么这里需要检查呢?
附:我在为列表视图的某些特定行着色时遇到一些问题,但是当我删除此检查时,一切正常。这就是为什么我想知道它的实用性。
The convertView
范围may是一个回收视图(例如,向下滚动后,顶部的行变得不可见,因此它们的View
对象不会被销毁,而是被回收并作为参数传递以供重用)。
然而,第一次绘制请求到来时,没有视图(例如,第一次加载带有列表的屏幕)。因此,在这种情况下convertView
没有价值,因为没有任何东西被回收(它是null
),在这种情况下,您必须使用充气器创建行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)