使用对象列表填充Android Spinner

时间:2013-09-06 12:09:38

标签: android data-structures spinner android-spinner populate

我正在使用用户对象填充我的微调器,以便稍后使用用户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);

这就是它显示的内容:

2 个答案:

答案 0 :(得分:37)

尝试覆盖toString()类中的User方法:

@Override
public String toString() {
    return this.name;
}

答案 1 :(得分:0)

检查方法public View 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;
}