#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 .