0

我之前已经扩展过BaseAdapter和ArrayAdapter类很多次了,但是一直有一个关于BaseAdapter的唠叨的问题:为什么android.widget.Adapter接口中缺少一些方法比如getView(常识当然会说你需要这个)导致编译器错误,而其他,如 hasStableIds 不会导致任何此类错误?我知道 BaseAdapter 从 ListAdapter 继承了这些方法,ListAdapter 从 Adapter 继承了这些方法,但是为什么只需要实现几个而其他不需要呢?android 文档不包括那些专门在 BaseAdapter 文档中的调用,那么如果只有一些需要实现,那么哪里有任何迹象表明需要这些特定调用来扩展 BaseAdapter 呢?我知道我错过了什么,无论是我对 oop 原理的理解还是我阅读文档的能力。感谢您的见解!

注意:编译器错误是:

MyAdapter is not abstract and does not override abstract method getItemId(int) in Adapter

我找到的所需方法是:getItem、getCount、getItemId 和 getView

第二个说明:这些都是Adapter和ListAdapter中的抽象方法。

4

1 回答 1

1

为什么android.widget.Adapter接口中缺少getView等一些方法(常识当然会说你需要这个)会导致编译器错误

因为BaseAdapter是抽象类,又getView()是抽象方法。

而其他人,如 hasStableIds 不会导致任何此类错误?

因为如果需要,可以使用该子类BaseAdapter的实现。hasStableIds()

android 文档不包括那些专门在 BaseAdapter 文档中的调用

您将在文档Adapter部分的继承方法中找到它们。BaseAdapter

那么如果只有一些需要实现,那么在哪里有任何迹象表明需要扩展 BaseAdapter 的特定调用?

Adapter在和ListAdapter上定义BaseAdapter但未实现的方法是必需的。

定义在Adapter和上ListAdapter的、BaseAdapter 确实实现的方法不是必需的,但如果需要,仍然可以被覆盖。

于 2013-08-06T21:16:59.020 回答