Как определить конструктор без аргументов в Android / java

#java #android

#java #Android

Вопрос:

Я пытаюсь запустить проект и получаю ту же ошибку: вызвано: java.lang.Исключение InstantiationException: java.lang.Класс<co.il.applicationморан.PersonListAdapter> не имеет конструктора с нулевым аргументом.

Я пытаюсь определить конструктор по умолчанию без каких-либо ошибок, может кто-нибудь подсказать мне, как это сделать?

Спасибо . Вот мой класс :

 public class PersonListAdapter  extends  ArrayAdapter<person>
{
    private static String TAG = "PersonListAdapter";
    private Context mycontext;
    int myresource;


    public PersonListAdapter(Context context, int resource, ArrayList<person> objects)
    {
        super(context, resource, objects);
        this.mycontext = context;
        this.myresource=resource;
    }


    @NonNull
    @Override
    public View getView(int position,  View convertView,  ViewGroup parent) {
        String name = getItem(position).getName();
        String age=getItem(position).getAge();
        String sex=getItem(position).getSex();

        person person=new person(name,age,sex);
        LayoutInflater inflater=LayoutInflater.from(mycontext);
        convertView=inflater.inflate(myresource, parent, false);

        TextView tvName=(TextView) convertView.findViewById(R.id.textview1);
        TextView tvAge=(TextView) convertView.findViewById(R.id.textview2);
        TextView tvSex=(TextView) convertView.findViewById(R.id.textview3);

        tvName.setText(name);
        tvAge.setText(age);
        tvSex.setText(sex);

        return convertView;
    }
}
 

Комментарии:

1. вам нужно Override super(Context context, int resource, ArrayList<person> objects); , но я думаю, что это вызовет у вас проблемы

Ответ №1:

Проблема не в конструкторе с нулевым аргументом, проблема в том, что вы пытаетесь вызвать свой адаптер с помощью недопустимого конструктора, вам нужно передать контекст и дополнительный ресурс, а также список данных, используемых для заполнения элементов адаптера.

Комментарии:

1. Привет, вы можете указать более подробную информацию? или пример, как его написать? — Большое спасибо

Ответ №2:

 private Context mycontext;
int myresource;
 ArrayList<person> object=new ArrayList<person>();//missing line
  
  public PersonListAdapter(Context context, int resource, ArrayList<person> objects)
{
    super(context, resource, objects);
    this.mycontext = context;
    this.myresource=resource;
    this.object=object;//missing this line in your code
}
 

Поскольку ваш конструктор имеет три параметра, вам необходимо передать три аргумента везде, где вы создаете экземпляр PersonListAdapter .