此代码是否实例化了一个SectionedAdapter对象并在一行中覆盖了getHeaderView?
SectionedAdapter tagSectionedAdapter=new SectionedAdapter() {
protected View getHeaderView(String caption, int index,
View convertView,
ViewGroup parent) {
TextView result=(TextView)convertView;
if (convertView==null) {
result=(TextView)getLayoutInflater()
.inflate(R.layout.tag_listview_header, null);
}
result.setText(caption);
return(result);
}
};
答案 0 :(得分:3)
是的,你是对的。这称为anonymous inner class。该类已定义但从未给出名称。 (SectionedAdapter
实际上是匿名类的超类型。)
答案 1 :(得分:2)
它声明了一个类并重写了一个方法。
它类似于声明这样的类:
class MySectionedAdapter extends SectionedAdapter
{
@Override
protected View getHeaderView(...)
{
...
}
}
然后实例化该类:
SectionedAdapter tagSectionedAdapter = new MySectionedAdapter();
这是一个匿名的内部类 - 没有名称和略有不同的语法。在某些情况下只需要一个类的特定实例时使用它。例如,比较器类通常以这种方式实现并传递给排序函数。
您实现的类实际上可以是一个接口,而不是一个类,就像Runnable
一样。