2010-12-22 82 views
0

好的,我希望我不会因为询问这样一个模棱两可的问题而猛烈抨击,但我很难过,甚至不知道如何提出这个问题。我会尽可能地尝试沟通我的问题,并会在需要时予以澄清。Android自定义光标适配器和BindView

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

我一步步通过BindView,我发现它执行了3次。我的列表视图中只有7个项目(所以这是7x3)。他们都显示在屏幕上,除了项目7中的一个字段外。我注意到,虽然在BindView的两次通过中缺少一个字段值。

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

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

回答

1

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

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

+0

感谢您的回答。我认为我缺少物品的问题与setContentView()有关。当我的活动首次运行时,我的列表中的东西缺失。当活动恢复时,所有物品都在那里。我创建了一个名为initialize()的东西,它从处理列表总体的onResume()运行。当它从onResume()被调用时,一切都很好。如果它在onCreate()后被调用,我的物品丢失。 – 2010-12-23 16:00:32