SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como definir aleatoriamente o texto para os botões do SQLite sem repetição?


existem mais abordagens para resolver seu problema:
  1. execute a instrução sql (sem limitação) no início e mova para a próxima entrada do cursor quando uma pergunta for respondida corretamente
  2. arrumar as perguntas que já foram respondidas

a segunda abordagem poderia ser feita da seguinte forma:

primeiro, altere seu método e sql, incluindo uma cláusula where:
public Cursor getTestData(String whereClause)
 {;
     try
     {
         String sql ="SELECT * FROM tblPitanja WHERE 1 = 1 " + whereClause + " ORDER BY RANDOM() LIMIT 1";
         [...]

segundo, faça buffer das perguntas já respondidas em sua classe de jogo:

adicione uma LinkedList à sua classe de jogo
LinkedList<Long> mAnsweredQuestions = new LinkedList<Long>();

adicione perguntas já respondidas à LinkedList:
Cursor c = mDbHelper.getTestData(generateWhereClause());
mAnsweredQuestions.add(c.getLong(0));
List<Answer> labels = new ArrayList<Answer>();
[...]

adicione uma função que gera a cláusula where:
private String generateWhereClause(){
    StringBuilder result = new StringBuilder();
    for (Long l : mAnsweredQuestions){
         result.append(" AND " + YOURID + " <> " + l);
    }
    return result.toString();
}