ListView 适配器 getView 在 Nexus 设备上使用空转换视图调用两次



我这里有一个奇怪的情况。

有一个带有自定义适配器的列表视图。该视图具有几种不同的项目类型,这些类型在 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也不会为空,但您仍然需要根据项目位置设置具有值的视图。

希望你得到!

最新更新