sql >> Base de Datos >  >> RDS >> SQLite

¿Cómo establecer aleatoriamente texto en botones de SQLite sin repetición?

hay más enfoques para resolver su problema:

  1. ejecutar la instrucción sql (sin limitación) al principio y pasar a la siguiente entrada del cursor cuando una pregunta se responda correctamente
  2. amortigua las preguntas que ya fueron respondidas

el segundo enfoque podría hacerse de la siguiente manera:

primero, cambie su método y sql, incluida una cláusula where:

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

segundo, amortigua las preguntas ya respondidas en tu clase de juego:

agregue una LinkedList a su clase de juego

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

agregar preguntas ya respondidas a LinkedList:

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

agregue una función que genere la cláusula where:

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