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-------------------