Come faccio a random il mio quiz nel database senza duplicare

Questa è la mia attività where la domanda viene eseguita

Non so where devo codificare e quale codice devo metterlo a random una domanda senza alcuna domanda duplicata (credo che il suo qid).

  • Devo usare cocos2D o andengine?
  • Convertire UTC in Tempo locale su Android
  • Trova la class che spreca la memory
  • Utilizzo della class EffectFactory su bitmap - Android
  • L'emulatore Android utilizza il 100% di CPU anche se niente in esecuzione su di esso?
  • gli incendi cromati mobili ridimensionano l'evento sullo scorrimento
  • package com.example.testing; import java.util.List; import java.util.Random; import java.util.Timer; import java.util.concurrent.TimeUnit; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.graphics.Typeface; import android.media.MediaPlayer; import android.os.Build; import android.os.Bundle; import android.os.CountDownTimer; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; public class QuestionActivity extends Activity{ List<Question> quesList; int score = 0; int qid = 0; int lives = 5; Question currentQ; TextView txtQuestion, times, scored, livess; Button button1, button2, button3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); QuizHelper db = new QuizHelper(this); // my question bank class quesList = db.getAllQuestions(); // this will fetch all quetonall questions currentQ = quesList.get(qid); // the current question txtQuestion = (TextView) findViewById(R.id.txtQuestion); // the textview in which the question will be displayed // the three buttons, // the idea is to set the text of three buttons with the options from question bank button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); livess = (TextView) findViewById(R.id.livess); // the textview in which will be displayed scored = (TextView) findViewById(R.id.score); // the timer times = (TextView) findViewById(R.id.timers); // method which will set the things up for our game setQuestionView(); times.setText("00:02:00"); // A timer of 60 seconds to play for, with an interval of 1 second (1000 milliseconds) CounterClass timer = new CounterClass(60000, 1000); timer.start(); // button click listeners button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // passing the button text to other method // to check whether the anser is correct or not // same for all three buttons getAnswer(button1.getText().toString()); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getAnswer(button2.getText().toString()); } }); button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getAnswer(button3.getText().toString()); } }); } public void getAnswer(String AnswerString) { if (currentQ.getANSWER().equals(AnswerString)) { // if conditions matches increase the int (score) by 1 // and set the text of the score view score++; scored.setText("Score : " + score); } else if(lives > 1){ lives--; livess.setText("Lives: " + lives); } else { Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); Bundle b = new Bundle(); b.putInt("score", score); // Your score intent.putExtras(b); // Put your score to your next startActivity(intent); finish(); } { } if (qid < 20) { // if questions are not over then do this currentQ = quesList.get(qid); setQuestionView(); } else { // if over do this Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); Bundle b = new Bundle(); b.putInt("score", score); // Your score intent.putExtras(b); // Put your score to your next startActivity(intent); finish(); } } @TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") public class CounterClass extends CountDownTimer { public CounterClass(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); // TODO Auto-generated constructor stub } @Override public void onFinish() { times.setText("Time is up"); } @Override public void onTick(long millisUntilFinished) { // TODO Auto-generated method stub long millis = millisUntilFinished; String hms = String.format( "%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS .toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS .toMinutes(millis))); System.out.println(hms); times.setText(hms); } } private void setQuestionView() { // the method which will put all things together txtQuestion.setText(currentQ.getQUESTION()); button1.setText(currentQ.getOPTA()); button2.setText(currentQ.getOPTB()); button3.setText(currentQ.getOPTC()); qid++; } } 

    e questo è il database della mia domanda e risposta che sto utilizzando sqlite non so where devo codificare la domanda random senza duplicato.

     package com.example.testing; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class QuizHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; // Database Name private static final String DATABASE_NAME = "mathsone"; // tasks table name private static final String TABLE_QUEST = "quest"; // tasks Table Columns names private static final String KEY_ID = "qid"; private static final String KEY_QUES = "question"; private static final String KEY_ANSWER = "answer"; // correct option private static final String KEY_OPTA = "opta"; // option a private static final String KEY_OPTB = "optb"; // option b private static final String KEY_OPTC = "optc"; // option c private SQLiteDatabase dbase; public QuizHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { dbase = db; String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_QUEST + " ( " + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_QUES + " TEXT, " + KEY_ANSWER + " TEXT, " + KEY_OPTA + " TEXT, " + KEY_OPTB + " TEXT, " + KEY_OPTC + " TEXT)"; db.execSQL(sql); addQuestion(); // db.close(); } private void addQuestion() { Question q1 = new Question("5+2 = ?", "7", "8", "6", "7"); this.addQuestion(q1); Question q2 = new Question("2+18 = ?", "18", "19", "20", "20"); this.addQuestion(q2); Question q3 = new Question("10-3 = ?", "6", "7", "8", "7"); this.addQuestion(q3); Question q4 = new Question("5+7 = ?", "12", "13", "14", "12"); this.addQuestion(q4); Question q5 = new Question("3-1 = ?", "1", "3", "2", "2"); this.addQuestion(q5); Question q6 = new Question("0+1 = ?", "1", "0", "10", "1"); this.addQuestion(q6); Question q7 = new Question("9-9 = ?", "0", "9", "1", "0"); this.addQuestion(q7); Question q8 = new Question("3+6 = ?", "8", "7", "9", "9"); this.addQuestion(q8); Question q9 = new Question("1+5 = ?", "6", "7", "5", "6"); this.addQuestion(q9); Question q10 = new Question("7-5 = ?", "3", "2", "6", "2"); this.addQuestion(q10); Question q11 = new Question("7-2 = ?", "7", "6", "5", "5"); this.addQuestion(q11); Question q12 = new Question("3+5 = ?", "8", "7", "5", "8"); this.addQuestion(q12); Question q13 = new Question("0+6 = ?", "7", "6", "5", "6"); this.addQuestion(q13); Question q14 = new Question("12-10 = ?", "1", "2", "3", "2"); this.addQuestion(q14); Question q15 = new Question("12+2 = ?", "14", "15", "16", "14"); this.addQuestion(q15); Question q16 = new Question("2-1 = ?", "2", "1", "0", "1"); this.addQuestion(q16); Question q17 = new Question("6-6 = ?", "6", "12", "0", "0"); this.addQuestion(q17); Question q18 = new Question("5-1 = ?", "4", "3", "2", "4"); this.addQuestion(q18); Question q19 = new Question("4+2 = ?", "6", "7", "5", "6"); this.addQuestion(q19); Question q20 = new Question("5+1 = ?", "6", "7", "5", "6"); this.addQuestion(q20); Question q21 = new Question("5-4 = ?", "5", "4", "1", "1"); this.addQuestion(q21); // END } @Override public void onUpgrade(SQLiteDatabase db, int oldV, int newV) { // Drop older table if existed db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUEST); // Create tables again onCreate(db); } // Adding new question public void addQuestion(Question quest) { // SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_QUES, quest.getQUESTION()); values.put(KEY_ANSWER, quest.getANSWER()); values.put(KEY_OPTA, quest.getOPTA()); values.put(KEY_OPTB, quest.getOPTB()); values.put(KEY_OPTC, quest.getOPTC()); // Inserting Row dbase.insert(TABLE_QUEST, null, values); } public List<Question> getAllQuestions() { List<Question> quesList = new ArrayList<Question>(); // Select All Query String selectQuery = "SELECT * FROM " + TABLE_QUEST; dbase = this.getReadableDatabase(); Cursor cursor = dbase.rawQuery(selectQuery, null); // looping through all rows and adding to list if (cursor.moveToFirst()) { do { Question quest = new Question(); quest.setID(cursor.getInt(0)); quest.setQUESTION(cursor.getString(1)); quest.setANSWER(cursor.getString(2)); quest.setOPTA(cursor.getString(3)); quest.setOPTB(cursor.getString(4)); quest.setOPTC(cursor.getString(5)); quesList.add(quest); } while (cursor.moveToNext()); } // return quest list return quesList; } } 

  • Come get la risposta come String utilizzando retrofit senza utilizzare GSON o qualsiasi altra libreria in android
  • Altezza dynamic di TextView all'interno di un GridLayout
  • Programmaticamente fai app FULL SCREEN in Android
  • Come colbind GestureDetector a una listpreferenza?
  • Vuoi utilizzare GoogleMaps - OnMyLocationChangeListener ma non può implementarla? Qualsiasi altra opzione
  • Solo Bitmap TileX
  • 2 Solutions collect form web for “Come faccio a random il mio quiz nel database senza duplicare”

     List<Question> quesList; //This is a arrays of question quesList = db.getAllQuestions(); // this will fetch all quetonall questions from database currentQ = quesList.get(qid); // this is the current question at present its at 0th position(ie first question) 

    E le tue domande sulla visualizzazione di text in questo metodo

     private void setQuestionView() { // the method which will put all things together txtQuestion.setText(currentQ.getQUESTION()); button1.setText(currentQ.getOPTA()); button2.setText(currentQ.getOPTB()); button3.setText(currentQ.getOPTC()); qid++; } 

    E se hai bisogno di mostrare domande casuali,

     quesList = db.getAllQuestions(); //arrays of questions Random random = new Random(); // to get random arrays currentQ = random.nextInt(quesList.size()); //assign random question to current question. 

    la visualizzazione sulla visualizzazione di text verrà gestita da un metodo setQuestionView ()

    • Per tenere traccia delle domande utilizzate, creare ArrayList<Integer> questionsDone .

    • Per generare una domanda random, creare l'object della class java.util.Random e get l'integer random fino al numero di domande nel database

      int totalQuestions = cursor.getCount(); e get un nuovo ID della domanda utilizzando int questionId = random.nextInt(totalQuestions);

    • Prima di visualizzarlo all'utente, controllare se contiene in arrays questionsDone . Se contiene allora generare un'altra domanda in quanto è dubbia domanda.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.