如何在Android中将自定义类List的属性绑定到Spinner?

时间:2013-06-26 11:29:17

标签: android list spinner android-spinner

我正在Azure Cloud中托管的移动服务客户端检索自定义对象列表,现在我想绑定此类的属性之一到Spinner客户端中的Android控件。

正如下面的代码,我有一个来自Azure移动服务的List<Departement>,我想在Android客户端中将 DepartmentName 绑定到此Spinner

public class Department
{
    public int ID;
    public String DepartmentName;
}

非常感谢任何建议

1 个答案:

答案 0 :(得分:7)

你可以:

  1. 覆盖自定义对象中的 toString()方法,以根据您的自定义返回正常值 属性

    public class Department
    {
        public int ID;
        public String DepartmentName;
    
        @Override
        public String toString() {
           return DepartmentName;
        } 
    }
    

    然后在你看来

    public void populateSpinner(Context context, List<Department> departments, Spinner spinner)
    {
        ArrayAdapter<Department> adapter = new ArrayAdapter<Department>(context, android.R.layout.simple_spinner_item, departments);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
    } 
    
  2. 微调器适配器创建临时List<String>

    public void populateSpinner(Context context, List<Department> departments, Spinner spinner)
    {
        List<String> list = new ArrayList<String>();
        for(Department dep : departments) {
            list.add(dep.DepartmentName);
        }
    
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
    }   
    
  3. 最后但并非最不重要的是,使用基于BaseAdapter的自己的适配器,而不是使用通用ArrayAdapter,它将拥有自定义对象列表并为您的微调器提供视图。< / p>