从sqlite数据库将对象作为值加载到ObjectChoiceField

时间:2013-11-07 17:44:11

标签: sqlite blackberry

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

clase 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);
    }
};

1 个答案:

答案 0 :(得分:0)

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

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

现在您可以为ObjectChoiceField提供'array',但要注意ObjectChoiceField将为每个选项显示的文本,将是使用每个元素的toString()方法生成的String。