我正在制作一个扩展ArrayAdapter的自定义适配器。当我扩展BaseAdapter时,它工作正常,但是当我使用ArrayAdapter时,它在super()上显示错误。我的适配器代码:
CustomAdapter.java
public class CustomAdapter extends ArrayAdapter {
private final Context context;
private List<String> Title=new ArrayList<String>();
private List<String> Dis=new ArrayList<String>();
private List<String> Desc=new ArrayList<String>();
public static TextView title;
public CustomAdapter(Context context,List<String>title,List<String>dis,List<String> desc) {
super(); //ERROR HERE
this.context = context;
this.Title=title;
this.Dis=dis;
this.Desc=desc;
}
@Override
public int getCount() {
return Title.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.custom_adapter,parent, false);
title = (TextView)v.findViewById(R.id.helloText);
final TextView dis = (TextView)v.findViewById(R.id.dis);
final TextView descr = (TextView)v.findViewById(R.id.descr);
title.setText(Title.get(position));
dis.setText(Dis.get(position));
descr.setText(Desc.get(position));
return v;
}
}
我想把它称为:
CustomAdapter ad=new CustomAdapter(this,titles,dis,desc);
title,dis,desc是列表。
答案 0 :(得分:1)
看一下java基础知识的解释。
这是一个摘录:
“您不必为您的类提供任何constructors
,但在执行此操作时必须小心。编译器会自动为没有{{1}的任何类提供无参数,默认constructor
这个默认的constructors
将调用超类的无参数构造函数。在这种情况下,如果超类没有无参构造函数,编译器会抱怨所以你必须验证它是否存在。如果你的class没有显式的超类,然后它有一个隐式的超类Object,它有一个无参数的构造函数。“
您可以阅读整篇文章here
进一步你可以看看constructor
来源为0X0nosugar建议。
答案 1 :(得分:0)
您需要将参数传递给super(),将 super()替换为以下
super(context,title,dis,desc);