SQLite
 sql >> Database >  >> RDS >> SQLite

Come impostare in modo casuale il testo sui pulsanti da SQLite senza ripetizioni?

ci sono più approcci per risolvere il tuo problema:

  1. esegui l'istruzione sql (senza limitazioni) all'inizio e passa alla voce successiva del cursore quando una domanda ha risposto correttamente
  2. bufferizza le domande a cui hai già risposto

il secondo approccio potrebbe essere fatto come segue:

per prima cosa, cambia il tuo metodo e sql, inclusa una clausola where:

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

secondo, bufferizza le domande già risposte nella tua classe di gioco:

aggiungi una LinkedList alla tua classe di gioco

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

aggiungi le domande già risposte alla LinkedList:

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

aggiungi una funzione che genera la clausola where:

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