在我的应用程序中我使用LinkhedHashSet而不是ArrayList来保存ItemCategory对象(具有name和id属性的POJO) 现在我想在Spinned中加载这个LinkedHashSet,而不必事先将LinkedHashsSet转换为ArrayList。可能吗?这是我的代码
public static void loadSpinnerData(Context context, ArrayList<ItemCategory> array, Spinner spinner) {
// Creating adapter for spinner
ArrayAdapter<ItemCategory> dataAdapter = new ArrayAdapter<ItemCategory>(context,
R.drawable.simple_spinner_item, array);
// Drop down layout style - list view with radio button
dataAdapter
.setDropDownViewResource(R.drawable.simple_spinner_dropdown_item);
// Attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
}
btw我在ItemCategory对象中重写了toString()方法以返回类别名称:
public class ItemCategory {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.name;
}
}
答案 0 :(得分:3)
不要使用ArrayAdapter
。相反,从BaseAdapter延伸。您必须复制ArrayAdapter
的某些行为,但不会因其限制而受到阻碍。
答案 1 :(得分:1)
按BaseAdapter
扩展您的适配器,并通过返回getCount
的大小覆盖LinkedHashSet
方法。
答案 2 :(得分:0)
不幸的是,不,你不能。如果您查看ArrayAdapter
API参考,您会看到只能为其指定数组或条目列表。