为什么Android View API关心ArrayAdapter';什么是getViewTypeCount?
我一直在学习如何创建自定义的为什么Android View API关心ArrayAdapter';什么是getViewTypeCount?,android,android-listview,android-arrayadapter,recycle,Android,Android Listview,Android Arrayadapter,Recycle,我一直在学习如何创建自定义的ArrayAdapters,并熟悉了重写ArrayAdapter的getViewTypeCount和getItemViewType方法 为什么Android View API关心getViewTypeCount返回的“可能的视图类型数”?而且,作为程序员,我为什么要关心呢?In“每种类型表示一组可以在getView(int、View、ViewGroup)中转换的视图。” 如果视图不同,则它们不能与不兼容的其他视图一起循环使用。因此,如果此方法返回与1不同的任何内容,则
ArrayAdapter
s,并熟悉了重写ArrayAdapter的getViewTypeCount
和getItemViewType
方法
为什么Android View API关心getViewTypeCount
返回的“可能的视图类型数”?而且,作为程序员,我为什么要关心呢?In“每种类型表示一组可以在getView(int、View、ViewGroup)中转换的视图。”
如果视图不同,则它们不能与不兼容的其他视图一起循环使用。因此,如果此方法返回与
1
不同的任何内容,则标准onView
回收代码将不再有效 Commonware对您上一个问题的回答很好地解释了为什么您需要关心这些方法。下面是一个小例子:
您有一个包含100行和3种类型行的列表视图
:
TextView
ListView
的启动方式如下:
//...
if (convertView == null) {
// inflate views
} else {
//just use it
//...
- 位置0:TextView我刚刚查看了Android源代码,查看了
的具体使用位置。它位于abstractgetViewTypeCount
class'internalAbsListView
class'RecycleBin
方法中 此setViewTypeCount
方法用于指定setViewTypeCount
的scrapViews
的初始大小。此ArrayList
本身是ArrayList
的ArrayList
——每个“视图类型计数”一个 此外,ArrayList
返回的值被分配给getViewTypeCount
的成员变量RecycleBin
。该成员用于控制RecycleBin类中的几个方法中只有一个或多个视图的情况下的回收逻辑(正如每个人都提到的) 因此,我相信答案是,mViewTypeCount
由getViewTypeCount
使用,这样它就知道它是否只有一个或多个视图需要处理。可以这么说RecycleBin
(感谢大家打开我对回收利用的眼睛,并激励我阅读来源。)可能重复它的相关内容(我是两者的作者),但我选择将问题保持原子化/分离。要再次强调这个问题的重点,请意识到这个问题与回收利用或使用自定义视图无关——我是在问,“既然Android从getItemViewType中检索特定的视图类型,为什么它要知道/关心自定义视图的数量?”我真的很喜欢这种循环使用的解释。然而,这个答案与循环使用更相关。我的问题是,具体地说,为什么自定义视图的数量很重要,每个
?@ybakos:”具体地说,我的问题是,为什么每个getViewTypeCount的自定义视图数量很重要?”——这驱动了它维护以供回收的对象池的数量。欢迎您通过getViewTypeCount
代码筛选更多细节。AdapterView