Object Adapter для Spinner
Есть ArrayList в котором находятся объекты класса Engineer (id, firstName, lastName). Нужно создать выпадающий список, который отображает firstName и lastName. Класс Engineers:
public class Engineer {
private int id;
private String firstName, lastName;
public Engineer(int id, String firstName, String lastName){
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
public int getId() {
return id;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
Адаптер пытаюсь делать так, но естественно выводит ссылку на объект класса.
ArrayAdapter adapterEngineers = new ArrayAdapter<>(getContext(),R.layout.support_simple_spinner_dropdown_item, list);
adapterEngineers.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
engineer.setAdapter(adapterEngineers);
И ещё такой вопрос. Как получить значение элемента Spinner (firstName, lastName) указав id экземпляра класса?
Ответы (1 шт):
Автор решения: Circassian
→ Ссылка
public class CustomAdapter extends ArrayAdapter<Engineer> {
private Context context;
private int mResource; // id вьюхи для свернутого списка
private int dropDownResource; // id вьюхи для выпадающего списка
private List<Engineer> engineers;
public CustomAdapter(@NonNull Context context, int mResource, int dropDownResource, List<Engineer> engineers) {
super(context, mResource, engineers);
this.context = context;
this.mResource = mResource;
this.dropDownResource = dropDownResource;
this.engineers = engineers;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(mResource, parent, false);
view.findViewById(R.id.tvFullName).text = String.format(
"%s %s",
engineers.get(position).getFirstName(),
engineers.get(position).getLastName()
);
return view;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(dropDownResource, parent, false);
view.findViewById(R.id.tvFullName).text = String.format(
"%s %s",
engineers.get(position).getFirstName(),
engineers.get(position).getLastName()
);
return view;
}
}