2013-05-22 36 views
0

我看到getView实现,直接使用convertView参数:Android Adapter getView方法:调用super.getView或不?

if(convertView!=null) 
    ... 
return convertView 

另一种实现来电super.getView:

View view = super.getView(position, convertView, parent); 
if(view!=null) 
    ... 
return view 

我的问题是,什么是正确的方法是什么?

回答

1

我猜你是在谈论Adapter.getView()。你在扩展哪个适配器?

大多数适配器本身并没有实现getView(),并且希望在自己膨胀视图之前检查convertView是否为null。

我说大多数适配器,因为有例外。如果您从第三方子适配器-lib适配器可能实际上提供getView()的实现和处理视图回收。在这种情况下,你真的应该打电话给超级班。

另外,如果你看一看the codeCursorAdapter它实际上有getView的实现()

+0

谢谢。我没有制作真正的代码。这是一个普遍的问题,要了解更多关于getView的知识,而不是理解为什么不使用简单的复制和粘贴代码。 – juan

+0

啊,好吧,如果这是一个普遍问题,那么不,你不应该调用super.getView()。你应该检查convertView是否为null,如果是,你应该膨胀一个新的视图,否则重用你拥有的视图。适配器最常见的用途可能是BaseAdapter或ListAdapter,在这两种情况下,您都不应该调用super.getView() – britzl

+0

再次感谢... – juan

2

the super.getView(position, convertView, parent);因为super什么都不做,所以是不完整的。

getView属于Adapter接口。

here你可以找到的代码

+0

谢谢,我改问题的称号了。 – juan

+0

打电话与否没有任何区别。 – Blackbelt

+0

这取决于适配器不是吗?如果它是标准适配器之一,则没有关系,因为没有实现可以谈论,但对于第三方库或CursorAdapter实际上是这样。 – britzl

相关问题