2
您好,我有以下对象:组选定项目
public class busObj {
private int id;
private String registrationNo;
private String model;
private String driver;
private String contact;
public busObj() { }
public busObj(int id, String registrationNo, String model, String driver, String contact) {
this.id = id;
this.registrationNo = registrationNo;
this.model = model;
this.driver = driver;
this.contact = contact;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRegistrationNo() {
return registrationNo;
}
public void setRegistrationNo(String registrationNo) {
this.registrationNo = registrationNo;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
@Override
public String toString() {
return model + " " + registrationNo + " - " + driver;
}
}
现在我已经创建了这个对象的ArrayList:
ArrayList<busObj> busList;
然后我用分配给我的适配器和设置我的列表视图:
protected void setBusSpinner() {
bAdapter = new ArrayAdapter<busObj>(this, R.layout.simple_list_item, busList);
bAdapter.notifyDataSetChanged();
spBus.setAdapter(bAdapter);
}
现在上面的代码中所有的作品,但我的问题是我有同样的活动(而不是片段)的列表,以便当用户点击该列表中的一个项目时,表单中的数据应该被填充。
我可以用EditText和TextView的等,但是当它来到微调,我不知道如何去做它,因为我有实际的项目不是位置。
在我的情况下,一个选定的项目将是一个“bankObj”,但正如你可以从我的代码中看到的,我重写了“toString()”属性来显示文本而不是对象。
所以假如我有1的ID对象如何设置,作为我的微调当前选定的项目?
我见过类似这样像堆栈溢出几个问题:How to set selected item of Spinner by value, not by position?但至今没有一个为我工作。
我不知道我的问题是否正确,但微调控制器有'onItemSelectedListener'接口,它具有'onItemSelected(AdapterView > parent,View arg1,int pos,long id)'这可能对你有帮助。这会在适配器中给出所选项目的位置。 –
不,该项目是从列表视图中选择的,微调控件在同一活动中的形式。所以基本上当用户点击列表视图中的项目时,微调器应该改变为所选项目的值。在我的情况下,所选项目始终是一个对象。 – user3718908