Android Studio, SQLite Cursor Loop - PullRequest
       5

Android Studio, SQLite Cursor Loop

0 голосов
/ 27 марта 2020

Я сейчас работаю над приложением и хочу показать одежду на макете. Поэтому я создал базу данных с SQLite и хотел бы узнать, как правильно выполнять итерации для моей функции.

Итак, это две мои функции в классе с именем Vetement BDD:

public Vetement getVetementWithTypeMeteo(int Type) {
    //On récupère dans un Cursor les valeurs correspondant à un vetement contenu dans la BDD (ici on sélectionne le vetement grâce à son idMeteo)
    Cursor c = bdd.query(TABLE_VETEMENT, new String[]{COL_ID, COL_NOM, COL_METEO, COL_GENRE, COL_IMAGE, COL_VETEMENT, COL_MIN, COL_MAX}, COL_VETEMENT + "=" + Type, null, null, null, null);
     return cursorToVetement(c);
}



//Cette méthode permet de convertir un cursor en un vetement
private Vetement cursorToVetement(Cursor c){
    //si aucun élément n'a été retourné dans la requête, on renvoie null
    if (c.getCount() == 0)
        return null;
    //Sinon on se place sur le premier élément

    Vetement vetement = new Vetement();
        //On créé un vetement

          //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor
          vetement.setVETEMENT(c.getInt(NUM_COL_ID));
          vetement.setNOM(c.getString(NUM_COL_NOM));
          vetement.setMETEO(c.getString(NUM_COL_METEO));
          vetement.setGENRE(c.getString(NUM_COL_GENRE));
          vetement.setIMAGE(c.getString(NUM_COL_IMAGE));
          vetement.setVETEMENT(c.getInt(NUM_COL_VETEMENT));
          vetement.setMIN(c.getInt(NUM_COL_MIN));
          vetement.setMAX(c.getInt(NUM_COL_MAX));
          //On ferme pas le cursor car on boucle et on ferme a la fin
        //On retourne le vetement
    return vetement;
}

В мой второй класс (макет, в котором я хочу показать название моей одежды)

VetementBDD vetementBDD = new VetementBDD(this); // I create an instance of my BDD

Перед тем, как открыть свой BDD, я вставляю свои данные (я не показываю вам, что это слишком долго)

Я открываю его:

vetementBDD.open();

И, наконец, я хочу отобразить свои данные в textView:

Vetement MeteoDuJourVetement1 = vetementBDD.getVetementWithTypeMeteo(1);
        Vetement MeteoDuJourVetement2 = vetementBDD.getVetementWithTypeMeteo(2);
        Vetement MeteoDuJourVetement3 = vetementBDD.getVetementWithTypeMeteo(3);

        //Si aucun vetement n'est retourné,
        if(MeteoDuJourVetement1 == null){
            //On affiche un message indiquant que le vetement n'existe pas dans la BDD
            Toast.makeText(this, "Le vetement n'existe pas", Toast.LENGTH_LONG).show();

        }
        //Si le vetement existe
        else{
            //on affiche un message indiquant que le vetement existe dans la BDD
            Meteo.setText(MeteoDuJourVetement1.getNOM());
        }

Итак, я пробовал как 3 метода, но первый зациклен до бесконечности на моем макете (как вы можете видеть, я хочу отображать только имя моей одежды и только одежду, которая имеет тип: 1), а 2 других ничего не отображают.

Ребята, есть ли у вас какой-нибудь совет, чтобы успешно повторять и отображать только ОДИН РАЗ мои данные?

...