使用对象列表填充 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 以在选择微调器的项目时获得好的结果 @Gaurav 不需要因为有人已经理解并给了我正确的答案:) 【参考方案1】:

尝试覆盖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的主要内容,如果未能解决你的问题,请参考以下文章

使用对象列表填充 Android Spinner

我试图用列表中的对象填充列表视图,但只显示名称属性,同时允许用户在列表视图中多选项目

Android:使用数组项填充列表视图

238.Spinners

Android:SearchBox -> 使用通过 HTTP/JSON 接收的数据动态填充提示列表

Android - 使用片段和简单的光标适配器填充列表视图