使 ArrayAdapter<ItemCategory> 接受 LinkedHashSet 而不是 ArrayList



在我的应用程序中,我使用LinkhedHashSet而不是ArrayList来保存ItemCategory对象(具有名称和ID属性的POJO) 现在我想在旋转中加载这个 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);
}

}

顺便说一句,我已经覆盖了 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;
}
}

不要使用ArrayAdapter.相反,请从 BaseAdapter 扩展。您必须复制ArrayAdapter的一些行为,但您不会受到其限制的阻碍。

通过BaseAdapter扩展适配器,并通过返回LinkedHashSet的大小来覆盖getCount方法。

不幸的是,不,你不能。如果您查看ArrayAdapterAPI 参考,您会发现您只能为其提供数组或条目列表。

最新更新