我创造的ListView这就需要一个继承ListAdapter(CustomAdapter)一个专门的适配器的子类。我想保留setAdapter和getAdapter方法,因为它们是程序员期望与AdapterView一起使用的标准方法。ListView的子类自定义适配器:基本的Java Q
我可以重写,吸气:
@Override
public CustomAdapter getAdapter() {...}
因为它仍然会返回一个ListAdapter。不过,我无法覆盖setter:
@Override
public void setAdapter(CustomAdapter adapter) {...}
我得到为什么Java不会让我这样做。所以要解决它,现在,我这样做:
@Override
public void setAdapter(ListAdapter adapter) {
throw new UnsupportedOperationException("adapter must be an instance of CustomAdapter");
}
public void setAdapter(CustomAdapter adapter) {
this.adapter = adapter;
}
我不认为这是一个大问题,但它有点虫子我。仍然暴露原始ListAdapter设置器(尤其是因为它显示在自动完成列表中)似乎不够雅观。有没有什么办法可以压制原来的setter,或者是上面的block是否做到这一点的正确方法?
感谢,
我很感兴趣,有什么特别之处CustomAdapter的ListAdapter impls不能做? – user802421 2011-12-27 00:38:51
自定义listView是一个向下钻取列表,所以customAdapter需要公开在数据层次结构中向上或向下移动的方法(其中涉及到懒惰读取数据) – noobler 2011-12-29 14:42:48