Adapter及其子类
参考 Android 8.0 源码
注意:我们这篇文章涉及到的子类,是指的在Android 8.0 源码中的/framework/base/core/java/android/widget这个目录下的子类。其实,还有一些其他类也是和Adapter有子类关系的,只是这些类可能是在其他包中的,在这篇文章中就不再讲解了。
Adapter的子类结构
Adpater是一个接口,它的直接子类有两个,这两个也都是接口:ListAdapter(接口)和Spinneradapter(接口)。
public interface Adapter {
}
public interface ListAdapter extends Adapter {
}
public interface SpinnerAdapter extends Adapter {
}
ListAdapter的子类结构
ListAdapter的直接子类有两个:WrapperListAdapter(接口)和BaseAdapter(类)。WrapperListAdapter是一个接口;BaseAdapter是我们最常用的,但是这个BaseAdapter类既实现了ListAdapter,又实现了SpinnerAdapter。
public interface WrapperListAdapter extends ListAdapter {
}
public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter {
}
SpinnerAdapter的子类结构
SpinnerAdapter的直接子类有两个:ThemedSpinnerAdapter(接口)和BaseAdapter(类)。ThemedSpinnerAdapter是一个接口;BaseAdapter类在上面已经讲解了。
public interface ThemedSpinnerAdapter extends SpinnerAdapter {
}
WrapperListAdapter的子类结构
WrapperListAdapter只有一个实现子类:HeaderViewListAdapter(类)。
public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {
}
ThemedSpinnerAdapter的子类结构
ThemedSpinnerAdapter的实现子类有三个:ArrayAdapter(类)、CursorAdapter(类)、SimpleAdapter(类),这三个都实现了该接口。同时这三个都是BaseAdapter的子类。
BaseAdapter的子类结构
BaseAdapter的直接子类有三个:ArrayAdapter(类)、CursorAdapter(类)、SimpleAdapter(类),这三个类也都实现了ThemedSpinnerAdapter接口。
public class ArrayAdapter<T> extends BaseAdapter implements Filterable, ThemedSpinnerAdapter {
}
public abstract class CursorAdapter extends BaseAdapter implements Filterable,
CursorFilter.CursorFilterClient, ThemedSpinnerAdapter {
}
public class SimpleAdapter extends BaseAdapter implements Filterable, ThemedSpinnerAdapter {
}
CursorAdapter的子类结构
CursorAdapter类有一个直接子类:ResourceCursorAdapter(类)。ResourceCursorAdapter类有两个直接子类:SimpleCursorAdapter(类)和SuggestionsAdapter(类)。
public abstract class ResourceCursorAdapter extends CursorAdapter {
}
public class SimpleCursorAdapter extends ResourceCursorAdapter {
}
class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListener {
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
------------------last line for now-------------------