使用对象列表填充 Android Spinner
Posted
技术标签:
【中文标题】使用对象列表填充 Android Spinner【英文标题】:Populating Android Spinner with List of Objects 【发布时间】:2013-09-10 12:58:07 【问题描述】:我正在用用户对象填充我的微调器,以便稍后使用用户 ID,但用户列表的显示显示了我猜测的对象的地址。
所以我的问题是如何只显示对象的一个属性,在用户名的情况下,但仍然用整个对象填充微调器
这是我的代码:
User user1 = new User("user1",24);
User user2 = new User("user2",26);
// Creating adapter for spinner
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
ArrayAdapter<User> dataAdapter = new ArrayAdapter<User>(this,
android.R.layout.simple_spinner_item, users);
// Drop down layout style - list view
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner _EmpSpinner = null;
_EmpSpinner = (Spinner) findViewById(R.id.EmployeesSpinner);
// attaching data adapter to spinner
_EmpSpinner.setAdapter(dataAdapter);
这就是它显示的内容:
【问题讨论】:
你的问题搞砸了,让你更清楚你想做什么,你的问题是什么 这里是你正在显示的对象的内存地址。您可能做了类似对象的数组列表之类的操作。您应该从对象列表中创建一个字符串列表,而不是对象列表,并将其提供给微调器。您可以创建一个 Hashmap尝试覆盖User
类中的toString()
方法:
@Override
public String toString()
return this.name;
【讨论】:
另外,如果您想获取User
对象以稍后保存或其他方式,您可以使用以下命令:User user = (User) ( (Spinner) findViewById(R.id.user) ).getSelectedItem();
如果我有一个包含三个字段的对象,Id 和字段显示在下拉列表中“覆盖 toString 方法”和字段只是为了在选择此对象时显示它一个选定的文件?我们能做到吗?【参考方案2】:
查看方法publicView getDropDownView(int position, View view, ViewGroup parent);
您不需要重写对象的toString()
方法。
@Override
public View getDropDownView(int position, View view, ViewGroup parent)
view = inflter.inflate(R.layout.obino_spinner_style, null);
TextView goalNameTV= (TextView)view.findViewById(R.id.ObiNoID_Spinner_Text);
goalNameTV.setText(goalItemList.get(position).getGoalType());
return view;
【讨论】:
以上是关于使用对象列表填充 Android Spinner的主要内容,如果未能解决你的问题,请参考以下文章
我试图用列表中的对象填充列表视图,但只显示名称属性,同时允许用户在列表视图中多选项目