我在这里遇到了一个奇怪的情况。
有一个带有自定义适配器的列表视图。该视图有一些在getViewItemType
中正确使用的不同项类型。在几乎每个设备和支持的操作系统上,调用适配器中的getView
方法都没有任何奇怪的行为。
我知道可以多次调用getView
,这不是问题。但是,在Nexus 5和Nexus 6上,getView会针对相同的项类型调用两次,并传递convertView
null
。
结果是我们最终为列表中的同一行创建了两个视图。似乎一个人实际上会被附加或添加到列表视图而另一个不是。
可能导致此问题的任何建议或提示?
答案 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
将不为空,但您仍需要根据项目位置设置具有值的视图。
希望你有!