在Spinner中选择条目 - Android
我有一个ID和值的项目,我想将它们添加到微调框中。 所以当我选择这个项目时,我会得到它的ID。我只能像下面那样添加itemValue并获取选定的字符串。在Spinner中选择条目 - Android
任何人都可以给我这个解决方案吗?
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);
项目类
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..
而不是ArrayAdapter
感谢raju它现在工作,但我用答案=(答案)sp.getSelectedItem(); – TrungNguyen 2012-03-15 04:13:30
:D srr我忘了:D – TrungNguyen 2012-03-15 04:27:16
制作您自己的pojo类Item
并在其中添加两个字段,id和name。
然后制作这些项目的列表并为微调器编写您自己的适配器,然后使用它。
当您点击任何项目时,它会返回Item类的整个对象。
否则,如果项目ID是顺序的,那么您可以将它们与项目ID相匹配,并且可以继续使用相同的实现,您现在已经完成了。
但是第一种方法是推荐的方法,因为您正在使用面向对象的语言进行开发,并且您的数据结构必须在应用程序中表示您的需求的实际对象。
我已经拥有该POJO并试图使用ArrayAdapter
Srr为我的坏英语:) – TrungNguyen 2012-03-14 10:52:04
@raju:真诚的道歉,如果我是粗鲁的,但我的意思是它。请不要介意:) – akkilis 2012-03-14 10:57:35
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());
}
创建新的枚举:
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());
你想从微调得到什么?你想获得选择的项目还是选择的项目位置? – VenkaReddy 2012-03-14 10:24:48
我有从REST中检索的Item(id,value)。我想将它放入微调器中,并按值显示项目。但是当我选择了该项目后,我会将项目ID发回服务器(item.id与微调器中的位置无关) – TrungNguyen 2012-03-14 10:29:16