2011-08-17 38 views
8

我正在处理ListView。我想知道何时调用getView()。一旦适配器被设置,它会被调用吗?并且一旦getView()方法完成执行,“设置适配器”旁边的行会被调用吗?何时调用ListView的getView()方法?

一旦getView()完成执行,请帮助我知道哪一行被执行。

这对我很有帮助。

由于提前, Vaishnvai

+0

你可以发布你的代码吗? –

回答

11

getView()的呼吁传递给您的适配器列表中的每个项目。 设置适配器时会调用它。当getView()完成后,调用setAdapter(myAdapter)后的下一行。 为了调试getView(),您必须在其上切换一个断点,因为您无法从setAdapter(myAdapter)步入getView()getView()也在notifyDataSetChanged()之后并在滚动时调用。

+0

感谢您的快速响应当我在getView()方法中设置了一些变量值。当我将它们打印在setAdapter()方法旁边的行中时,它们仍然显示为零。这些变量可以访问完整的Activity。你能帮忙吗? – Vaishnavi

+3

hey。一旦getView()被执行,控件就不会回到setAdapter()旁边的语句。事实上,一旦setAdapter()被调用,控件就不会直接进入getView(),几乎所有的语句都会被优先处理,然后控件移动到getView()。林与这种行为literaly混淆。请帮忙。 – Vaishnavi

+1

嗨。这意味着,如果我有100个项目在列表视图中显示,那么getView()方法将被调用100次? –

7

为了更加清楚,只要屏幕上显示新项目时显示的项目数就会调用getView()。这意味着,如果你有100万个项目,但其中15个适合屏幕,getView被称为15次。无论何时向上/向下滚动并出现新项目,都会调用getView()以获取新项目。你也应该知道回收机制。其中包含每个项目类型的模板项目布局,并在此视图中将getView()方法作为convertView参数发送,因此您可以使用它来防止布局膨胀。

+0

嗨...所以,当我向下滚动时,getView()方法被调用,每个列表项都变得对用户可见?此外,最初如果在移动屏幕上一次只能看到10个项目,那么在开始时getView()方法会被调用10次?我的想法是否正确? ... 谢谢。 –

+0

@TheHunter是的,没错。 –

+0

每当getView()被调用时,convertView == null? –

相关问题