java - 如何从sqlite中随机访问问题?

标签 java android

我正在构建一个测验应用程序,我想从数据库中的 100 个问题中随机检索 10 个问题。

这是我从数据库中检索问题的代码

QuizDbHelper dbHelper = new QuizDbHelper(this);
            questionList = dbHelper.getQuestions(difficulty);
            questionCountTotal = questionList.size();
            Collections.shuffle(questionList);

QuizDbHelper 类的 getQuestions 方法:

 public ArrayList<Question> getQuestions(String difficulty) {


    ArrayList<Question> questionList = new ArrayList<>();
    db = getReadableDatabase();
    String[] selectionArgs=new String[]{difficulty};
    Cursor c = db.rawQuery("SELECT * FROM " + QuestionsTable.TABLE_NAME+ " WHERE " +QuestionsTable.COLUMN_DIFFICULTY+"= ?", selectionArgs);

    if (c.moveToFirst()) {
        do {
            Question question = new Question();
            question.setQuestion(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_QUESTION)));
            question.setOption1(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_OPTION1)));
            question.setOption2(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_OPTION2)));
            question.setOption3(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_OPTION3)));
            question.setOption4(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_OPTION4)));
            question.setAnswerNr(c.getInt(c.getColumnIndex(QuestionsTable.COLUMN_ANSWER_NR)));
            question.setDifficulty(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_DIFFICULTY)));
            questionList.add(question);
        } while (c.moveToNext());
    }

    c.close();

    return questionList;
}

当我运行它时,所有 100 个问题都出现了 任何人都可以更好地修复它..

最佳答案

首先从问题数组列表中的数据库中检索所有问题

然后洗牌你的arraylist。

Collections.shuffle(questionList);

并子列表到 10 个赞

   questionList.subList(0,10)

关于java - 如何从sqlite中随机访问问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58081865/

相关文章:

java - 正则表达式测试失败 - Java

java - java.util.Date 对象使用多少字节的内存?

java - 为什么 Gson 将 Integer 解析为 Double?

java - 乐观锁的重试机制(spring data + JPA)

java - addListenerForSingleValueEvent 不断重复输出

Android 12 蓝牙权限困惑

java - 调用 RxJava 的 Throttle 方法

android - 如果扩展文件版本与 apk 版本代码不同,则使用 URI(使用 Google Zip 扩展库)访问 APK 扩展文件会导致崩溃

android - Flutter Form:方法 'validate'在null上调用。 [所有配置均已配置]

android - AVD Android 模拟器拒绝在 Linux 上启动