使ArrayAdapter <itemcategory>接受LinkedHashSet而不是ArrayList </itemcategory>

时间:2014-02-07 09:29:08

标签: java android arraylist

在我的应用程序中我使用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;
    }

}

3 个答案:

答案 0 :(得分:3)

不要使用ArrayAdapter。相反,从BaseAdapter延伸。您必须复制ArrayAdapter的某些行为,但不会因其限制而受到阻碍。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

不幸的是,不,你不能。如果您查看ArrayAdapter API参考,您会看到只能为其指定数组或条目列表。