自定义适配器在super()上显示错误

时间:2015-12-01 07:24:58

标签: android android-activity android-adapter

我正在制作一个扩展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是列表。

2 个答案:

答案 0 :(得分:1)

看一下java基础知识的解释。 这是一个摘录: “您不必为您的类提供任何constructors,但在执行此操作时必须小心。编译器会自动为没有{{1}的任何类提供无参数,默认constructor这个默认的constructors将调用超类的无参数构造函数。在这种情况下,如果超类没有无参构造函数,编译器会抱怨所以你必须验证它是否存在。如果你的class没有显式的超类,然后它有一个隐式的超类Object,它有一个无参数的构造函数。“

您可以阅读整篇文章here

进一步你可以看看constructor来源为0X0nosugar建议。

答案 1 :(得分:0)

您需要将参数传递给super(),将 super()替换为以下

super(context,title,dis,desc);