SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment définir de manière aléatoire du texte sur les boutons de SQLite sans répétition ?

il existe d'autres approches pour résoudre votre problème :

  1. exécuter l'instruction sql (sans limitation) au début et passer à l'entrée suivante du curseur lorsqu'une question reçoit une réponse correcte
  2. mettre en mémoire tampon les questions qui ont déjà reçu une réponse

la deuxième approche pourrait se faire comme suit :

d'abord, changez votre méthode et sql, y compris une clause where :

public Cursor getTestData(String whereClause)
 {;
     try
     {
         String sql ="SELECT * FROM tblPitanja WHERE 1 = 1 " + whereClause + " ORDER BY RANDOM() LIMIT 1";
         [...]

deuxièmement, tamponnez les questions déjà répondues dans votre classe de jeu :

ajouter une LinkedList à votre classe de jeu

LinkedList<Long> mAnsweredQuestions = new LinkedList<Long>();

ajouter des questions déjà répondues à la LinkedList :

Cursor c = mDbHelper.getTestData(generateWhereClause());
mAnsweredQuestions.add(c.getLong(0));
List<Answer> labels = new ArrayList<Answer>();
[...]

ajoutez une fonction qui génère la clause where :

private String generateWhereClause(){
    StringBuilder result = new StringBuilder();
    for (Long l : mAnsweredQuestions){
         result.append(" AND " + YOURID + " <> " + l);
    }
    return result.toString();
}