This is just the continuation of this thread.
I am creating an android app quiz with different topics. So i have buttons for the topics and quizNum column in my database for Quiz1, Quiz2, Quiz3 and so on...
Here's my code for Quiz.java
public class Practice extends Activity implements OnClickListener{
//constants
public static final String QUIZNUM = "QUIZNUM";
public static final int Quiz1 = 1;
public static final int Quiz2 = 2;
public static final int Quiz3 = 3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.practice);
//Menu buttons
Button quiz1 = (Button) findViewById(R.id.q1Btn);
quiz1.setOnClickListener(this);
Button quiz2 = (Button) findViewById(R.id.q2Btn);
quiz2.setOnClickListener(this);
Button quiz3 = (Button) findViewById(R.id.q3Btn);
quiz3.setOnClickListener(this);
}
public void onClick(View v) {
Intent i;
List<Question> questions = getQuestionSetFromDb();
switch (v.getId()){
case R.id.q1Btn :
//Initialize quiz with retrieved question set
CurrentQuiz c = new CurrentQuiz();
c.setQuestions(questions);
c.setNumRounds(getNumQuestions());
c.setQuizNum(getQuizNum());
((MLearningApp)getApplication()).setCurrentGame(c);
i = new Intent(this, QuestionActivity.class);
startActivity(i);
break;
case R.id.q2Btn :
CurrentQuiz c2 = new CurrentQuiz();
c2.setQuestions(questions);
c2.setNumRounds(getNumQuestions());
c2.setQuizNum(getQuizNum());
((MLearningApp)getApplication()).setCurrentGame(c2);
i = new Intent(this, QuestionActivity.class);
startActivity(i);
break;
case R.id.q3Btn :
CurrentQuiz c3 = new CurrentQuiz();
c3.setQuestions(questions);
c3.setNumRounds(getNumQuestions());
c3.setQuizNum(getQuizNum());
((MLearningApp)getApplication()).setCurrentGame(c3);
i = new Intent(this, QuestionActivity.class);
startActivity(i);
break;
}
}
// Method that retrieves a random set of questions from db
private List<Question> getQuestionSetFromDb() throws Error {
int quizNum = getQuizNum();
int numQuestions = getNumQuestions();
DBHelper myDbHelper = new DBHelper(this);
try {
myDbHelper.createDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
myDbHelper.openDataBase();
}catch(SQLException sqle){
throw sqle;
}
List<Question> questions = myDbHelper.getQuestionSet(quizNum, numQuestions);
myDbHelper.close();
return questions;
}
private int getQuizNum() {
int qNum = Quiz1;
return qNum;
}
private int getNumQuestions() {
int numRounds = 10;
return numRounds;
}
And here's my query in DBHelper.java
public List<Question> getQuestionSet(int qNum, int numQ){
List<Question> questionSet = new ArrayList<Question>();
Cursor c = myDataBase.rawQuery("SELECT * FROM QUESTIONS WHERE qNum = " + qNum + " ORDER BY RANDOM() LIMIT " + numQ, null);
while (c.moveToNext()){
Question q = new Question();
q.setQuestion(c.getString(2));
q.setAnswer(c.getString(3));
q.setOption1(c.getString(4));
q.setOption2(c.getString(5));
questionSet.add(q);
}
return questionSet;
}
The quiz buttons are now running but it only retrieves questions from quiz1 (qNum table in db, 1). I was thinking of putting a looping statement in getQuizNum() method but i dont have an idea for the needed codes