2014-02-07 59 views
3

在我的應用程序中使用LinkhedHashSet而不是ArrayList來存放ItemCategory對象(PO​​JO具有名稱和id屬性) 現在我想要加載這個LinkedHashSet而不需要預先將LinkedHashsSet轉換爲ArrayList。可能嗎?這裏是我的代碼製作一個ArrayAdapter <ItemCategory>接受LinkedHashSet而不是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; 
    } 

} 

回答

3

不要使用ArrayAdapter。相反,從BaseAdapter延伸。您必須重複ArrayAdapter的某些行爲,但不會因其限制而受到阻礙。

+0

你能舉個例子嗎? –

+0

[此博客文章](http://www.piwai.info/android-adapter-good-practices/)詳細介紹了一些適配器的最佳做法。 –

0

不幸的是,不,你不能。如果您查看ArrayAdapter API參考,您會看到只能給它一個數組或一列條目。

1

將您的適配器擴展爲BaseAdapter,並通過返回LinkedHashSet的大小來覆蓋getCount方法。

相關問題