Android 为什么适配器中的getCount被调用了这么多次?

Android 为什么适配器中的getCount被调用了这么多次?,android,listview,listadapter,Android,Listview,Listadapter,我有一个自定义列表,需要几分钟才能显示出来。当我试图检查问题所在时,我发现即使列表中只有1项,方法getCount()也被调用了5次,getVIew()被调用了一次,然后getCount()被调用了更多的时间。 总共调用了7次getCount()。这有意义吗 谢谢大家! 您可以看到对适配器.getCount()方法的不同内部调用 但您必须记住,您无法控制如何调用此方法 它可以被多次调用,这就是为什么您必须尽可能快地保存它。getCount()被调用的次数太多,因为App USER可以随时更新其列

我有一个自定义列表,需要几分钟才能显示出来。当我试图检查问题所在时,我发现即使列表中只有1项,方法getCount()也被调用了5次,getVIew()被调用了一次,然后getCount()被调用了更多的时间。 总共调用了7次getCount()。这有意义吗

谢谢大家!

您可以看到对
适配器.getCount()方法的不同内部调用

但您必须记住,您无法控制如何调用此方法

它可以被多次调用,这就是为什么您必须尽可能快地保存它。

getCount()
被调用的次数太多,因为
App USER
可以
随时更新其列表(可以在其存储中添加数据),这就是为什么我们返回
(存储)。size()
(元素总数)

在以下情况下,将调用适配器
getCount()
方法

1) 将适配器设置为列表视图/网格视图时

2) 当我们在适配器上调用
notifyDataSetChanged


因此,请检入代码,您可能需要更多时间或递归地执行上述情况。

您应该有一个搜索按钮,在搜索时更新适配器。该方法被多次调用以绘制视图,如果在该方法中您有一个
setAdapter
,那么,
getCount
将被多次调用,并最终返回0,您的视图将不会被填充。

请提供代码示例!显示代码。我很怀疑getCount()是否会让您的列表爬行您在滚动吗?提供更多的数据克隆就可以了。我的意思是列表视图显示在屏幕上需要时间。我希望很快会附上代码。到目前为止还没有解决。。。很抱歉,我不理解“保持尽可能快”部分-此方法只返回数组大小,对吗?当然。但是你可以随心所欲地覆盖它。这样做的目的是确保您不会在其中进行任何代价高昂的计算,因为它可能会在UI线程中被多次调用。我所做的就是返回数组大小。所以我猜这意味着listView出现的时间与被多次调用的getCount()无关?可能不是……您可以使用DDMS分析工具查看实际消耗CPU的内容