Android测验随机问题

时间:2016-01-21 13:53:18

标签: android

如何将随RadioButton显示的问题随机化。我查看了其他帖子,但答案对我没用。

import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

public class QuizActivity extends Activity {
    int score = 0;
    int qnum = 1;
    TextView txtQuestion;
    RadioButton rda, rdb, rdc, rdd;
    Button butNext;
    RadioGroup rdgrp;

    String corAnswer = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.activity_quiz);
        DbHelper db = new DbHelper(this);
        rdgrp = (RadioGroup) findViewById(R.id.questionAndAnswers);
        txtQuestion = (TextView) findViewById(R.id.textView1);
        rda = (RadioButton) findViewById(R.id.radio0);
        rdb = (RadioButton) findViewById(R.id.radio1);
        rdc = (RadioButton) findViewById(R.id.radio2);
        rdd = (RadioButton) findViewById(R.id.radio3);
        butNext = (Button) findViewById(R.id.button1);


        corAnswer = "";
        onCreateQuestion();
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_quiz, menu);
        return true;
    }


    public void onCreateQuestion() {
        String level = getIntent().getExtras().getString("level");
        DbHelper db = new DbHelper(this);
        db.getQuestByLevel(level, qnum);

        txtQuestion.setText(db.question);
        rda.setText(db.optionA);
        rdb.setText(db.optionB);
        rdc.setText(db.optionC);
        rdd.setText(db.optionD);
        corAnswer = db.answer;

        qnum++;

    }

    public void onClickNext(View view) {
        String level = getIntent().getExtras().getString("level");
        DbHelper db = new DbHelper(this);
        db.getQuestByLevel(level, qnum);

        RadioGroup grp = (RadioGroup) findViewById(R.id.questionAndAnswers);
        RadioButton answer = (RadioButton) findViewById(grp.getCheckedRadioButtonId());
        if (answer == null)
        {
            Toast.makeText(QuizActivity.this, "select an answer please", Toast.LENGTH_SHORT).show();


            return;
        }
        if (corAnswer!= null && corAnswer.equalsIgnoreCase((String) answer.getText()))
        {
            score++;
            Log.d("answer", "Your score" + score);
        }
        if (qnum <= 5) {


        } else {
            Intent intent = new Intent(QuizActivity.this, ResultActivity.class);
            Bundle b = new Bundle();
            b.putInt("score", score);
            intent.putExtras(b);
            startActivity(intent);
            finish();
        }

        txtQuestion.setText(db.question);
        rda.setText(db.optionA);
        rdb.setText(db.optionB);
        rdc.setText(db.optionC);
        rdd.setText(db.optionD);
        corAnswer = db.answer;
        qnum++;
        rdgrp.clearCheck();
    }


}

1 个答案:

答案 0 :(得分:2)

将您的问题放在Array中,然后使用以下内容对此数组进行随机播放:

List<String> myArray = new ArrayList<String>(Arrays.asList(questionArray));
Collections.shuffle(myArray);

或直接使用您的SQL查询,您可以使用:

... ORDER BY RANDOM()...

正如你在这里看到的那样,我有一个简单的表 [cyril_test] ,就像这样:

enter image description here

然后我用ORDER BY RANDOM()执行查询:

enter image description here

结果是:

enter image description here