проблемы с преобразованием данных sqlite в объект - PullRequest
0 голосов
/ 23 сентября 2011

Я учусь открывать вакансии на 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;
    }

1 Ответ

0 голосов
/ 23 сентября 2011
Objet[] objet = new Objet[100];

Это создает новый массив, который может содержать 100 Objet экземпляров. Он не создает никакого экземпляра Objet: все слоты изначально null.

Итак, вам нужно явно создать объекты в цикле:

  objet[i] = new Objet();
  objet[i].setDescription(c.getString(2));
  ...

Также ваша структура петли необычна и неправильна (попробуйте смоделировать ее на бумаге с помощью compteur == 2). Используйте простой цикл.

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

И вы никуда не продвигаете курсор. Вам нужно будет позвонить moveToNext() куда-нибудь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...