Android自定义游标适配器和BindView

时间:2010-12-22 17:56:23

标签: android sqlite cursor

好的,我希望我不会因为提出这样一个含糊不清的问题而受到抨击,但我很难过,甚至不知道怎么问这个问题。我将尽可能地尽力传达我的问题,并在必要时澄清。

我使用MergeCursor合并了两个游标。我还有一个自定义游标适配器。在我的自定义游标适配器中,我已经重写了BindView。我注意到我的列表视图中没有显示项目的奇怪行为。基本上我对listview中的每一行都有两个textview。在最后一行中,其中一个字段为空。

我单步执行BindView,我注意到它被执行了3次。我的列表视图中只有7个项目(因此是7x3)。所有这些都显示在屏幕上,除了第7项中的一个字段。我注意到,在两次通过BindView时,缺少一个字段值。

我想知道的是,为什么BindView会执行3次。所以,当我说3我的意思是3x7。列表中有7个项目,因此它循环通过BindView 21次。我希望我有意义。

如果不清楚,请不要抨击我。我很乐意修改或提供其他信息。

1 个答案:

答案 0 :(得分:1)

  

我想知道的是,为什么BindView会执行3次。所以,当我说3我的意思是3x7。列表中有7个项目,因此它循环通过BindView 21次。我希望我有意义。

当ListView进入测量阶段时,它将在适配器上调用newView和bindView,以便它可以设置行(其子项)的尺寸并确定它自己的尺寸。在此过程中,它不会保留视图,因此在屏幕上绘制视图时需要重新创建视图。您可以查看ListView来源,以便准确了解它正在做什么。