From 11f732361dfc4a91dd50230022f98cbcaae644da Mon Sep 17 00:00:00 2001 From: rishab Date: Wed, 25 Mar 2020 21:51:21 +0530 Subject: [PATCH] Quiz part completed 50% --- .../java/com/example/alzapp/QuizDbHelper.java | 56 ++++------ .../com/example/alzapp/QuizQuestionPage.java | 104 +++++++++++++----- 2 files changed, 99 insertions(+), 61 deletions(-) diff --git a/app/src/main/java/com/example/alzapp/QuizDbHelper.java b/app/src/main/java/com/example/alzapp/QuizDbHelper.java index ada248f..3c35bb6 100644 --- a/app/src/main/java/com/example/alzapp/QuizDbHelper.java +++ b/app/src/main/java/com/example/alzapp/QuizDbHelper.java @@ -8,12 +8,13 @@ import android.database.sqlite.SQLiteOpenHelper; import com.example.alzapp.QuizContract.* ; + import java.util.ArrayList; import java.util.List; -public class QuizDbHelper extends SQLiteOpenHelper { - private static final String DATABASE_NAME = "Quiz.db"; +public class QuizDbHelper extends SQLiteOpenHelper { + private static final String DATABASE_NAME = "MyAwesomeQuiz.db"; private static final int DATABASE_VERSION = 1; private SQLiteDatabase db; @@ -24,7 +25,6 @@ public class QuizDbHelper extends SQLiteOpenHelper { @Override public void onCreate(SQLiteDatabase db) { - this.db = db; final String SQL_CREATE_QUESTIONS_TABLE = "CREATE TABLE " + @@ -38,66 +38,56 @@ public class QuizDbHelper extends SQLiteOpenHelper { ")"; db.execSQL(SQL_CREATE_QUESTIONS_TABLE); - fillQuestionsTable(); - } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - db.execSQL("DROP TABLE IF EXISTS " + QuestionsTable.TABLE_NAME); - onCreate(db); + db.execSQL("DROP TABLE IF EXISTS " + QuestionsTable.TABLE_NAME); + onCreate(db); } - private void fillQuestionsTable(){ + private void fillQuestionsTable() { Question q1 = new Question("A is correct", "A", "B", "C", 1); addQuestion(q1); - Question q2 = new Question("B is correct", "A", "B", "C", 2); addQuestion(q2); - Question q3 = new Question("C is correct", "A", "B", "C", 3); addQuestion(q3); - Question q4 = new Question("A is correct again", "A", "B", "C", 1); addQuestion(q4); - Question q5 = new Question("B is correct again", "A", "B", "C", 2); addQuestion(q5); - } - private void addQuestion(Question question){ + private void addQuestion(Question question) { ContentValues cv = new ContentValues(); cv.put(QuestionsTable.COLUMN_QUESTION, question.getQuestion()); cv.put(QuestionsTable.COLUMN_OPTION1, question.getOption1()); - cv.put(QuestionsTable.COLUMN_OPTION1, question.getOption1()); cv.put(QuestionsTable.COLUMN_OPTION2, question.getOption2()); cv.put(QuestionsTable.COLUMN_OPTION3, question.getOption3()); cv.put(QuestionsTable.COLUMN_ANSWER_NR, question.getAnswerNr()); - db.insert(QuestionsTable.TABLE_NAME, null, cv); - } + public List getAllQuestions() { + List questionList = new ArrayList<>(); + db = getReadableDatabase(); + Cursor c = db.rawQuery("SELECT * FROM " + QuestionsTable.TABLE_NAME, null); - public List getAllQuestions(){ - List questionList = new ArrayList<>(); - db = getReadableDatabase(); - Cursor c = db.rawQuery("SELECT * FROM " + QuestionsTable.TABLE_NAME, null); - - 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.setAnswerNr(c.getInt(c.getColumnIndex(QuestionsTable.COLUMN_ANSWER_NR))); - } while (c.moveToNext()); - } + 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.setAnswerNr(c.getInt(c.getColumnIndex(QuestionsTable.COLUMN_ANSWER_NR))); + questionList.add(question); + } while (c.moveToNext()); + } c.close(); return questionList; } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/example/alzapp/QuizQuestionPage.java b/app/src/main/java/com/example/alzapp/QuizQuestionPage.java index 38a2af9..bf79c37 100644 --- a/app/src/main/java/com/example/alzapp/QuizQuestionPage.java +++ b/app/src/main/java/com/example/alzapp/QuizQuestionPage.java @@ -1,22 +1,23 @@ package com.example.alzapp; import android.content.res.ColorStateList; +import android.graphics.Color; import android.os.Bundle; +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 androidx.appcompat.app.AppCompatActivity; import java.util.Collections; import java.util.List; public class QuizQuestionPage extends AppCompatActivity { - private TextView textViewQuestion; private TextView textViewScore; - private TextView textViewQuestionCount ; + private TextView textViewQuestionCount; private TextView textViewCountDown; private RadioGroup rbGroup; private RadioButton rb1; @@ -26,7 +27,6 @@ public class QuizQuestionPage extends AppCompatActivity { private ColorStateList textColorDefaultRb; - private List questionList; private int questionCounter; private int questionCountTotal; @@ -50,6 +50,7 @@ public class QuizQuestionPage extends AppCompatActivity { rb3 = findViewById(R.id.radioButton32); buttonConfirmNext = findViewById(R.id.quiz_confirm_next); + textColorDefaultRb = rb1.getTextColors(); QuizDbHelper dbHelper = new QuizDbHelper(this); @@ -59,40 +60,87 @@ public class QuizQuestionPage extends AppCompatActivity { showNextQuestion(); + buttonConfirmNext.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!answered) { + if (rb1.isChecked() || rb2.isChecked() || rb3.isChecked()) { + checkAnswer(); + } else { + Toast.makeText(QuizQuestionPage.this, "Please select an answer", Toast.LENGTH_SHORT).show(); + } + } else { + showNextQuestion(); + } + } + }); } - private void showNextQuestion(){ + private void showNextQuestion() { rb1.setTextColor(textColorDefaultRb); rb2.setTextColor(textColorDefaultRb); rb3.setTextColor(textColorDefaultRb); rbGroup.clearCheck(); - if ( questionCounter < questionCountTotal){ - currentQuestion = questionList.get(questionCounter); + if (questionCounter < questionCountTotal) { + currentQuestion = questionList.get(questionCounter); - textViewQuestion.setText(currentQuestion.getQuestion()); - rb1.setText(currentQuestion.getOption1()); - rb2.setText(currentQuestion.getOption2()); - rb3.setText(currentQuestion.getOption3()); + textViewQuestion.setText(currentQuestion.getQuestion()); + rb1.setText(currentQuestion.getOption1()); + rb2.setText(currentQuestion.getOption2()); + rb3.setText(currentQuestion.getOption3()); - questionCounter++; - textViewQuestionCount.setText("Question: "+ questionCounter + "/" + questionCountTotal); - answered = false; - buttonConfirmNext.setText("Confirm"); - } - - else { - finishQuiz(); - } + questionCounter++; + textViewQuestionCount.setText("Question: " + questionCounter + "/" + questionCountTotal); + answered = false; + buttonConfirmNext.setText("Confirm"); + } else { + finishQuiz(); + } } - private void finishQuiz(){ + private void checkAnswer() { + answered = true; + + RadioButton rbSelected = findViewById(rbGroup.getCheckedRadioButtonId()); + int answerNr = rbGroup.indexOfChild(rbSelected) + 1; + + if (answerNr == currentQuestion.getAnswerNr()) { + score++; + textViewScore.setText("Score: " + score); + } + + showSolution(); + } + + private void showSolution() { + rb1.setTextColor(Color.RED); + rb2.setTextColor(Color.RED); + rb3.setTextColor(Color.RED); + + switch (currentQuestion.getAnswerNr()) { + case 1: + rb1.setTextColor(Color.GREEN); + textViewQuestion.setText("Answer 1 is correct"); + break; + case 2: + rb2.setTextColor(Color.GREEN); + textViewQuestion.setText("Answer 2 is correct"); + break; + case 3: + rb3.setTextColor(Color.GREEN); + textViewQuestion.setText("Answer 3 is correct"); + break; + } + + if (questionCounter < questionCountTotal) { + buttonConfirmNext.setText("Next"); + } else { + buttonConfirmNext.setText("Finish"); + } + } + + private void finishQuiz() { finish(); } - - - - - - -} \ No newline at end of file +}