【发布时间】:2013-07-17 18:59:57
【问题描述】:
我有一段代码要研究,我困惑了很长时间,因为我试图制作我自己的版本并且它坏了然后我尝试逐步评论原始代码,看看它何时失败并给出了在我注释了它使用的一个变量的声明后,我在 getView 方法中添加了一个空指针。在我找到这个之前,我没有看到这个方法在任何地方被调用并搜索了很多答案:
When is the getView() method of ListView called?
它本质上是说,只要通过 setAdapter 方法将项目传递给适配器,就会调用 getView。
我查看了所有 View 文档、Adapter 文档、Inflater 等,但找不到任何信息告诉我发生了这种情况,甚至 setAdapter 方法本身也没有说明这种行为。这只是一个文档错误还是有一些我没有正确遵循的一般准则?
【问题讨论】:
-
在 youtube“listview 世界”或类似内容(google io 2010 session)上更好地搜索
-
简单地说,Javadoc 不是文档——它是一个功能参考。该文档位于站点的其余部分。 Javadoc 从来都不是完整的文档,也不是它的目的。
-
Android 文档的某些方面提供了对某个主题的出色覆盖。 Android 文档的某些方面提供了一个主题的疯狂覆盖。
AdapterView,它的子类,以及ListAdapter家族,落在了糟糕的桶里,恕我直言。 SDK 示例、Google I|O 演示文稿等肯定会有所帮助。然而——冒着完全自私自利的风险——这就是为什么许多 Android 开发人员选择拿一本书来补充官方文档的原因。 -
只要在getView方法里放一个日志,你会看到第一次显示列表和开始滚动时调用了它。
-
这很奇怪:要登录,我只需在类中添加: private static final String TAG = "test";和 getView 的第一行我刚刚添加了 Log.i(TAG,"who calls");正确的?但这实际上会强制关闭我的应用程序而没有任何错误日志或 logcat 信息