如何在Android测验中显示随机问题

时间:2016-01-28 08:36:36

标签: android

我正在制作一个Android测验应用程序我想显示随机问题。它有不同的水平容易中等和硬但在这里问题1出现时给出的答案来自问题2.

任何帮助都会非常感谢

public class DbHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "QUIZ";
private static final String TABLE_QUIZ = "quiz";
private static final String KEY_ID = "id";
private static final String KEY_QUES = "question";
private static final String KEY_ANSWER = "answer";
private static final String KEY_OPTA = "opta";
private static final String KEY_OPTB = "optb";
private static final String KEY_OPTC = "optc";
private static final String KEY_OPTD = "optd";
private static final String q_level = "level";
private static final String QuestionNumber = "q_number";
private SQLiteDatabase dbase;
public String question, optionA, optionB, optionC, optionD, answer;

public DbHelper(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_QUIZ + " ( "
            + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_QUES
            + " TEXT, " + KEY_ANSWER + " TEXT, " + KEY_OPTA + " TEXT, "
            + KEY_OPTB + " TEXT, " + KEY_OPTC + " TEXT, " + KEY_OPTD  +" TEXT, " + q_level + " TEXT, " + QuestionNumber + " INTEGER)";
    db.execSQL(sql);
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','EASY','1')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q2','A1','A2','A3','A4','Answer','EASY','2')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q3','A1','A2','A3','A4','Answer','EASY','3')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q4','A1','A2','A3','A4','Answer','EASY','4')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q5','A1','A2','A3','A4','Answer','EASY','5')");



    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','MEDIUM','1')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','MEDIUM','2')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','MEDIUM','3')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','MEDIUM','4')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','MEDIUM','5')");


    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','HARD','1')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','HARD','2')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','HARD','3')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','HARD','4')");
    db.execSQL("INSERT INTO " + TABLE_QUIZ + "(" + KEY_QUES + ", " + KEY_OPTA + ", " + KEY_OPTB + ", " + KEY_OPTC + ", " + KEY_OPTD + ", " + KEY_ANSWER + ", " + q_level + ", " + QuestionNumber + ")VALUES(" +
            "'Q1','A1','A2','A3','A4','Answer','HARD','5')");
    addQuestions();
    //db.close();
}

private void addQuestions() {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUIZ);
    onCreate(db);
}



public void getQuestByLevel(String level, int qnum) {
   String selectQuery = "SELECT * FROM " + TABLE_QUIZ +  " WHERE "+ q_level +"  = '"+ level +"' ORDER BY RANDOM() LIMIT 5;";


    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {

            question=cursor.getString(cursor.getColumnIndex(KEY_QUES));
            optionA=cursor.getString(cursor.getColumnIndex(KEY_OPTA));
            optionB=cursor.getString(cursor.getColumnIndex(KEY_OPTB));
            optionC=cursor.getString(cursor.getColumnIndex(KEY_OPTC));
            optionD=cursor.getString(cursor.getColumnIndex(KEY_OPTD));
            answer=cursor.getString(cursor.getColumnIndex(KEY_ANSWER));


        } while (cursor.moveToNext());

    }
}

}

1 个答案:

答案 0 :(得分:0)

你必须使用随机数生成器从数据库表中获取随机问题。在这里,我将向您展示如何从数据库中获取随机问题。

你必须以自己的方式管理不同的三个级别,或者你的应用程序逻辑在这里我将解释锄头得到随机问题。

注意:这只是逻辑上的答案,你必须以自己的方式管理它。

首先得到整数数组中的所有问题id,我们可以说itemQuestionID

现在创建如下方式的随机数生成方法

public static int getRandom(int[] array) {
    int rnd = new Random().nextInt(array.length);
    return array[rnd];
}

调用该方法

int queID = getRandom(itemQuestionID);

您在屏幕上显示该问题的任何问题ID。

getRandom 方法给你同样的问题是在你必须处理的所有问题中管理这个问题的一个或多个时间已经由用户回答(通过在表中添加一个列或保存问题ID)一些数组)

希望您理解这一点并对代码进行适当的更改