我试图在 ListView 的子类中覆盖方法 setAdapter。setAdapter 定义为
void setAdapter(T adapter);
在 AdapterView 类中。AdapterView 类是泛型类 AdapterView
上面的声明不适用于 ListView 子类,因为类型变量不可用,但我不明白如何将类型变量引入子类。任何具体类型都不起作用。
确实AdapterView
使用泛型类型参数,但是ListView
并GridView
指定类型必须是ListAdapter
. 所以你可以这样做:
@Override
public void setAdapter(ListAdapter adapter) {
// ...
}
这是因为ListView
的父类AbsListView
, 扩展了AdapterView<ListAdapter>
:
public abstract class AbsListView extends AdapterView<ListAdapter> { ... }
这意味着T
它ListAdapter
在ListView
.