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