0

我可以将对象作为值加载到ObjectChoiceFieldsqlite 数据库中。我需要一个例子,我把数据库的值变成一个向量,但是下拉列表不接受这种类型的单数组。

类 BaseData

public Vector verSectores(){

    Vector v=new Vector();

    try{

        URI uri=URI.create("/SDCard/Databases/app/semana_calculadora.db");
        sqliteDB= DatabaseFactory.open(uri);
        Statement st= sqliteDB.createStatement("select Sector from sectores_app");
        st.prepare();
        Cursor c= st.getCursor();
        Row r; 

        while (c.next()){
            r=c.getRow();

            Sectores s= new Sectores(r.getString(0));

            v.addElement(s);
        }

        st.close();
        sqliteDB.close();

    }catch(Exception e){}
    return v;
}

班级成绩

public class Resultados extends MainScreen{

private Vector v;

public Resultados(Vector v) {
    this.v = v;

    for (int i = 0; i < v.size(); i++) {

        Sectores s=(Sectores)v.elementAt(i);

        //add(new LabelField(s.getName_sector()+ ""));
        add(new SeparatorField());
    }
}

因为我必须将向量的值传递给 ObjectChoiceField?

班级画面

comboFormato = new ObjectChoiceField("Format:", ********, 0){

    public void layout(int width, int height){

        width=350;

        super.layout(getWidth(), getHeight());
        super.layout(width, height);

        setExtent(width, super.getHeight());
    }

    public void paint(Graphics g) {
        g.setColor(Color.RED);
        super.paint(g);
    }
};
4

1 回答 1

0

您不能使用 Vector 作为 ObjectChoiceField 的基础,但可以使用 Objects 数组,并且很容易将 Vector 转换为数组,例如,使用 Arrays 类提供的工具或只是蛮力如下:

Sectores [] array = new Sectores [v.size()];
for ( int i = 0; i < array.length; i++ ) {
  array[i] = (Sectores)v.elementAt(i);
}

现在您可以为您的 ObjectChoiceField 提供“数组”,但请注意,ObjectChoiceField 将为每个选项显示的文本将是使用每个元素的 toString() 方法生成的字符串。

于 2013-11-07T21:26:35.527 回答