Android - 如何创建自定义(不同)微调器

时间:2011-10-13 14:35:22

标签: android spinner android-spinner

我正在尝试构建并填充一个微调器。我有一个问题填充它,它给我错误“静态初始化程序的代码超过65535字节限制”。我需要把所有物品放在旋转器内。我的微调器以这种方式设置:

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" },
    };

使用自定义微调器可以吗?我希望你理解我的意思和写作。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我认为这是失败的,因为你在静态初始化器中使用了超过65535个字节,或者更具体地说是使用Java源文件来输入..

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

将使您在编译器/语言规范中遇到限制 - 即来自JVM规范

  

“每个非本机非抽象方法的代码量限制为65536   字节数由代码的exception_table中的索引的大小   属性(§4.7.3),在LineNumberTable属性(§4.7.8)和   LocalVariableTable属性(§4.7.9)。 “

如果您将数据存储在数据库或文件中(这实际上应该是您如何执行此操作,在Java源文件中执行它真的很笨重),这可能会非常有效 - 请注意,即使您的代码少于那么多字节,您也可以遇到65536字节限制,因为它是您在内部存储它的方式。

如果您将代码更改为:

,则可以验证是否属于这种情况
 public static final Names[] DB = new Names[]{ 
    new Names("Albert","Person"),
    new Names("Bobby","Animal")};

然后运行它(删除了其余部分)。