SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Wie setze ich zufällig Text auf Schaltflächen von SQLite ohne Wiederholung?

es gibt noch weitere Ansätze zur Lösung deines Problems:

  1. Führen Sie die SQL-Anweisung (ohne Einschränkung) am Anfang aus und gehen Sie zum nächsten Eintrag des Cursors, wenn eine Frage richtig beantwortet wurde
  2. die bereits beantworteten Fragen zwischenspeichern

Der zweite Ansatz könnte wie folgt erfolgen:

Ändern Sie zuerst Ihre Methode und SQL, einschließlich einer Where-Klausel:

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

Puffern Sie zweitens die bereits beantworteten Fragen in Ihrer Spielklasse:

Fügen Sie Ihrer Spielklasse eine LinkedList hinzu

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

bereits beantwortete Fragen zur LinkedList hinzufügen:

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

füge eine Funktion hinzu, die die Where-Klausel generiert:

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