Adapter,BaseAdapter,ListAdapter,SpannerAdapter的那点事

上面的四个适配器(Adapter)是最常用的东西,但是有很多人不理解,比如这样的写法,其实我自己也是有困惑的。为什么没有在父类BaseAdapter里面没有重写而在子类myAdapter里面重写。

下面是自己定义的类,myAdapter。

 

为什么要重写getCount、getItem、getItemId、getView这四个方法?我们得从源代码看起。

Adapter:

 

 

ListAdapter:

 

SpannerAdapter:

 

最后:BaseAdapter

 

由以上源码可以看出,BaseAdapter最终是实现了Adapter接口的,但是还是没有说到重点上,为什么没有在BaseAdapter重写getCount、getItem、getItemId、getView这四个方法而到BaseAdapter的子类里面来重写。按理说不应该啊,类去实现接口都必须重写接口中所有的方法,万幸的是BaseAdapter是抽象的。如果对于java基础不牢靠的人来说是一个问题。下面我就说说抽象类和接口的事,从这里面你就能找到答案。

 

接口其实也是抽象类,比普通的抽象类更加的抽象,接口里面的方法只能是抽象的,而普通的抽象类里面的方法可以是抽象的也可以不是抽象的,如果有抽象了方法,那么这个类也必定是抽象类。

还有一非常重要的东西就是,抽象类不一定要完全实现接口,也就是说,一个接口中的方法,抽象类可以不去实现所有的方法。看例子:

 

或者

这个例子说明,抽象类可以不重写接口里所有的方法,但是他的子类必须要全部重写。

 

这样回到我们的主题,为什么要在子类里要重写那四个方法,因为BaseAdapter里面没有重写,那么,子类就一定要重写了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值