我有一个id和value的项目,我想将它们添加到微调器中。 因此,当我选择项目时,我会得到它的ID。我只能添加如下的itemValue并获取所选的字符串。
有人能为我解决这个问题吗?
List<String> list = new ArrayList<String>();
list.add("item 1");
list.add("item 2");
list.add("item 3");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, list);
dataAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
final Spinner sp = new Spinner(this);
sp.setAdapter(dataAdapter);
答案 0 :(得分:8)
项目类
public class items {
private String name;
private int id;
public String getname() {
return name;
}
public void setname(String name) {
this.name = name;
}
public int getid() {
return id;
}
public void setid(int id) {
this.id =id;
}
@Override
public String toString() {
return name;
}
}
现在将项目添加到数组列表中,如下所示
List<items> values1=new ArrayList();
items comment = new items();
comment.setname("name1");
comment.setid("id1");
values1.add(comment);
ArrayAdapter<items> dataAdapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, list);...
就像你在这里的代码中所做的那样.. 像这样设置onitemselected监听器......
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
items item1 = (items)arg0.getItemAtPosition(arg2);
int id= item1.id<---- get id here..
答案 1 :(得分:0)
创建一个自己的pojo类Item
并在其中添加两个字段,id和name。
然后列出这些项目并为微调器编写自己的适配器,并使用它。
当你单击任何项目时,它将返回Item类的整个对象。
否则,如果项目ID是顺序的,那么你可以用项目ID映射它们你也可以继续使用相同的实现,你现在已经完成了。
但是第一种方法是推荐的方法,因为你正在使用面向对象的语言开发,你的数据结构必须代表实际的对象您在申请中的要求。
答案 2 :(得分:0)
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
// TODO Auto-generated method stub
//code one
String arr[]=getResources().getStringArray(R.array.days);
text1.setText(arr[arg2]);
//or
//code two
text1.setText(((TextView)arg1).getText());
}
答案 3 :(得分:0)
创建新的枚举:
public enum EnumerateThis {
ENUM1(0, "Use this like a value"),
ENUM2(1, "and first argumenta like an integer id");
private Integer id;
private String descr;
private EnumerateThis (Integer id, String place){
this.id = id;
this.descr = place;
}
public Integer getId() {
return id;
}
public String getDescr() {
return descr;
}
}
比使用微调器适配器:
ArrayAdapter<EnumerateThis> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, EnumerateThis.values());