Android 对象中转换sqlite数据的问题

Android 对象中转换sqlite数据的问题,android,sqlite,cursor,Android,Sqlite,Cursor,我正在学习在Android SQLite上打开工作。我想显示通过光标填充的微调器文本。使用时出现的问题: nameOfSPinner.getSelectedItem().toString(); 它显示选定索引的编号,而不是数据 为了解决这个问题,我想我可以获取所有信息并将其存储在对象数组中,然后用这些信息填充微调器。有更好的方法吗 当我获取写入索引的内容并将其显示在对象中时,我的应用程序因NullPointerException崩溃。我觉得有些基本的面向对象编程我不懂,但我什么也看不到 pub

我正在学习在Android SQLite上打开工作。我想显示通过光标填充的微调器文本。使用时出现的问题:

nameOfSPinner.getSelectedItem().toString();
它显示选定索引的编号,而不是数据

为了解决这个问题,我想我可以获取所有信息并将其存储在对象数组中,然后用这些信息填充微调器。有更好的方法吗

当我获取写入索引的内容并将其显示在对象中时,我的应用程序因NullPointerException崩溃。我觉得有些基本的面向对象编程我不懂,但我什么也看不到

public Objet[] getObjetDescription2(){
    Cursor c = bdd.query("nom de la table", new String[] {"rowid _id", "description", "id"},null, null, null, null, null);
    return nomFonction(c);
}

private Objet[]  nomFonction(Cursor c){

    //si aucun élément n'a été retourné dans la requête, on renvoie null
    if (c.getCount() == 0)
        return null;

    //Sinom on se place sur le premier élément
    c.moveToFirst();
    int compteur = c.getCount();
    Objet[] objet = new Objet[100];
    int i = 0;
    do{
        //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor
        objet[i].setDescription(c.getString(2));
        objet[i].setId(c.getInt(1));
        i++;
    }while(i >= compteur);

    //On ferme le cursor
    c.close();

    return objet;
    }
这将创建一个可容纳100个Objet实例的新阵列。它不创建任何Objet实例:所有插槽最初都为空

因此,您需要在循环中显式创建对象:

  objet[i] = new Objet();
  objet[i].setDescription(c.getString(2));
  ...
此外,您的循环结构既不寻常又不正确,请尝试在纸上用compteur==2模拟它。使用一个简单的for循环

for (i=0; i<compteur; i++) { ... }
你不能把光标移到任何地方。你需要打电话到下一个地方

for (i=0; i<compteur; i++) { ... }