我在使用Spinner小部件时遇到了一些麻烦.给出以下代码:
ArrayList<Person> people= new ArrayList<Person>();
Person = null;
for(int i = 0; i!= 10; i++) {
p = new Person();
s.setID(i);
s.setName("Name " + i);
people.add(s);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码将其绑定到Spinner:
Spinner spinner1 = (Spinner) findViewById (R.id.spinner);
ArrayAdapter<Person> adapter = new ArrayAdapter<Person>(this, android.R.layout.simple_spinner_item, people);
spinner1.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
我想要的是隐藏值(id),但在选中时传递,并显示名称.任何帮助表示赞赏.
谢谢.
jag*_*und 11
如果我正确理解了您的问题,您希望该名称显示在微调器下拉视图中.选择项目后,您希望返回ID.
有两种方法可以解决这个问题.
最简单的方法是实现一个toString(),它返回Person对象中的名称.将对象的文本值绑定到下拉视图时,ArrayAdapter将返回此值.然后在您的活动中,您可以为Spinner设置onItemClickListener并调用adapter.getItemAtPosition(position)来检索Person对象.从那个人的对象,你可以得到你的身份.
第二种方法是扩展ArrayAdapter并实现getView和getDropDownView以及getItem方法.getView负责创建单击微调器时看到的行.getDropDownView负责创建您在微调器中看到的视图.并且getItem方法将返回对象,或者在您的情况下返回指定位置的id.您应该将Person元素的名称绑定到getView和getDropDownView方法中的textview.在创建自定义ArrayAdapter之后,您应该为Spinner设置onItemClicKListener并像上面提到的那样处理它.
第一种方法很简单,但第二种方法非常优越,可以更好地控制适配器,特别是当您开始开发更复杂的东西时.
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
5140 次 |
| 最近记录: |