我这里有一个奇怪的情况。
有一个带有自定义适配器的列表视图。该视图具有几种不同的项目类型,这些类型在 getViewItemType
中正确使用。在几乎所有设备和支持的操作系统上,适配器中的getView
方法被调用,没有任何奇怪的行为。
我知道getView
可以多次调用,这不是问题所在。但是,在Nexus 5和Nexus 6上,getView对于相同的项目类型被调用两次,并且传递convertView
null
。
结果是我们最终为列表中的同一行创建了两个视图。似乎一个实际上会被附加或添加到列表视图中,而另一个则不会。
任何可能导致这种情况的建议或提示?
你怎么知道同一个项目叫了两次?
I ran the app with a debugger. It stopped on my breakpoint in getView multiple times (as expected) but two of the stops for the item passed null convertViews. It is a very small list, only four rows, each a different item type. They all show on the screen easily
您应该检查
getView()
中的position
,以确保是否调用了两次。
我想不是因为每个项目视图(convertView)的第一次总是为空,那么您需要inflate
具有项目视图布局的视图并将其返回。虽然下次显示相同的视图(即使对于不同的项目),convertView
也不会为空,但您仍然需要根据项目位置设置具有值的视图。
希望你得到!