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

Vis*_*att 2 android list spinner android-spinner

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

正如下面我的代码,我有一个List<Departement>从Azure的移动服务来了,我要绑定DepartmentName的这个Spinner在Android客户端.

public class Department
{
    public int ID;
    public String DepartmentName;
}
Run Code Online (Sandbox Code Playgroud)

任何建议都非常感谢

Gom*_*ino 7

你可以:

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

    public class Department
    {
        public int ID;
        public String DepartmentName;
    
        @Override
        public String toString() {
           return DepartmentName;
        } 
    }
    
    Run Code Online (Sandbox Code Playgroud)

    然后在你看来

    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);
    } 
    
    Run Code Online (Sandbox Code Playgroud)
  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);
    }   
    
    Run Code Online (Sandbox Code Playgroud)
  3. 最后但并非最不重要的是,使用您自己的适配器BaseAdapter而不是使用通用ArrayAdapter,它将拥有自定义对象列表并为您的微调器提供视图.