我正在学习在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;
}
答案 0 :(得分:0)
Objet[] objet = new Objet[100];
这将创建一个可容纳100个Objet
个实例的新数组。它不会创建任何Objet
实例:所有插槽最初都是null
。
所以你需要在循环中显式创建对象:
objet[i] = new Objet();
objet[i].setDescription(c.getString(2));
...
此外,您的循环结构既不常见又不正确(尝试使用compteur == 2
在纸上进行模拟)。使用简单的for循环。
for (i=0; i<compteur; i++) { ... }
并且你没有将光标推进到那里的任何地方。你需要在某个地方拨打moveToNext()
。