我正在Azure Cloud
中托管的移动服务客户端检索自定义对象列表,现在我想绑定此类的属性之一到Spinner
客户端中的Android
控件。
正如下面的代码,我有一个来自Azure移动服务的List<Departement>
,我想在Android客户端中将 DepartmentName 绑定到此Spinner
。
public class Department
{
public int ID;
public String DepartmentName;
}
非常感谢任何建议
答案 0 :(得分:7)
你可以:
覆盖自定义对象中的 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);
}
为微调器适配器创建临时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);
}
最后但并非最不重要的是,使用基于BaseAdapter
的自己的适配器,而不是使用通用ArrayAdapter
,它将拥有自定义对象列表并为您的微调器提供视图。< / p>