在Nexus设备上使用null convertView调用ListView适配器getView两次

时间:2015-04-09 12:58:19

标签: android listview android-listview android-adapter nexus-5

我在这里遇到了一个奇怪的情况。

有一个带有自定义适配器的列表视图。该视图有一些在getViewItemType中正确使用的不同项类型。在几乎每个设备和支持的操作系统上,调用适配器中的getView方法都没有任何奇怪的行为。

我知道可以多次调用getView,这不是问题。但是,在Nexus 5和Nexus 6上,getView会针对相同的项类型调用两次,并传递convertView null

结果是我们最终为列表中的同一行创建了两个视图。似乎一个人实际上会被附加或添加到列表视图而另一个不是。

可能导致此问题的任何建议或提示?

1 个答案:

答案 0 :(得分:0)

  

你怎么知道同一项目被叫两次?

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

  

您应该检查position中的getView()以确保调用两次。

我想不是因为每个项目视图(convertView)的第一次始终为null,那么您需要inflate具有项目视图布局的视图并将其返回。虽然下次显示相同的视图(即使对于不同的项目),convertView将不为空,但您仍需要根据项目位置设置具有值的视图。

希望你有!