GetView方法和convertView误解?

时间:2012-08-08 14:57:07

标签: android android-layout

我已经阅读了几次关于GetView DataAdapter类的android文档。根据我的理解,如果我有一个homogeneus列表,其中每个项目只是一个textview和所有项目都在屏幕内(不可能滚动),将没有任何视图回收,所以我应该接收4次调用GetView convertView为null。嗯,这不是我发生的事情。第一次convertView为null,但其他3个创建的项目是相同的。列表填充正确,但我想了解为什么会发生这种情况。如果有人可以提供帮助,我会非常感激。

1 个答案:

答案 0 :(得分:4)

我相信Android总是试图回收视图,因为这会使人口最快。如果所有视图都适合列表的可见视口,则无关紧要。通货膨胀/创建视图非常昂贵,这就是Android希望尽可能多地回收的原因。

您可以保证传入GetView的视图将具有相同的视图类型(在数据适配器中定义)或null。如果它为null,则需要为该视图类型创建一个新视图,否则您应该尝试重用传入的视图。对于TextView的同类列表,它非常简单:

if (convertView == null)
{
    TextView tv = new TextView();
    ....
    tv.setText("First Item");
}
else
{
    TextView tv = (TextView) convertView;
    ...
    tv.setText("Recycled Item");
}

为简单起见,您总是可以返回一个新视图而不是使用convertView,但性能不会那么好。