2011-10-13 101 views
1

我正在嘗試構建並填充微調框。我有一個填充它的問題,它給了我錯誤「靜態初始化器的代碼超過了65535字節的限制」。我需要把所有物品放在微調器內。我的微調器設置這樣:Android - 如何創建一個自定義(不同)的微調框

public class Names 
{ 
    public static final String ALL_NAMES = "All names"; 
    public static final String NAMES = "NAMES"; 
    public static final String OBJECT = "OBJECT"; 
    private String names; 
    private String object; 

    public Names(String names, String object){ 
     super(); 
     this.names = names; 
     this.object = object; 
    } 

    public String getNames() { return names; } 
    public String getObject() { return object; } 

    public static final Names[] DB = new Names[]{ 
     new Names("Albert","Person"), 
     new Names("Bobby","Animal"),... 

其中第二引號中的名稱是什麼,我可以從我的微調,並在第一個引號的名稱中進行選擇是我的選擇的結果。我想製作一個類似ExpandableList的東西,我插入一個「父字符串」,然後插入那種「父字符串」的所有項目。這是一個例子:

public class MyExpandableListAdapter extends BaseExpandableListAdapter { 
    private String[] groups = { "Persons", "Dogs", "Cats" }; 
    private String[][] children = { 
     { "Albert", "Robert", "Paul" }, 
     { "Yuri", "Rocky" }, 
     { "Lisa" }, 
    }; 

這可能使用自定義微調嗎?我希望你明白我的意思和寫作。感謝您的幫助。

+0

因此,當微調器顯示下拉菜單時,您希望它顯示名稱的對象? –

+0

我希望它顯示「人物」「狗」等,當我點擊一件物品時,它會給我所有物品的結果。例如:如果我點擊我的Spinner上的「Persons」,它會給我一個ListView的結果,如「Albert」Robert等。 – Valerio

回答

1

我認爲這是失敗的,因爲你已經在你的靜態初始化器使用超過65535個字節,或者更具體使用Java源文件進入..

public static final Names[] DB = new Names[]{ 
    new Names("Albert","Person"), 
    new Names("Bobby","Animal"),... 

將運行到其中的限制編譯器/語言規範 - 從JVM規範

IE「的每非本地的,非抽象方法的代碼的量被限制爲65536個 字節由索引的大小在代碼 屬性的exception_table (§4.7.3),在LineNu中mberTable屬性(§4.7.8)和 LocalVariableTable屬性(§4.7.9)。 「

如果將數據存儲在數據庫或文件中(這實際上應該是如何做到這一點,在java源文件中執行它真的很笨重),這可能會很好地工作,你加載 - 注意,即使你的代碼少於許多字節,你也可以運行到65536字節的限制,因爲它是它在內部存儲的方式,你遇到了。

你可以驗證這是這種情況如果你改變你的代碼閱讀:

public static final Names[] DB = new Names[]{ 
    new Names("Albert","Person"), 
    new Names("Bobby","Animal")}; 

然後運行它(有del eted其餘的)。

+0

我知道是因爲我刪除了很多新名稱(「」,「」 「)來運行我的應用程序,所以我正在尋找另一種方式來使用我的所有數據(如果可能,使用微調),即使是我刪除的數據。 – Valerio

+0

我試着按照這個例子http://developer.android.com /resources/tutorials/views/hello-spinner.html但我需要把結果放在我從我的微調器中選擇的結果上? – Valerio