Quiz part completed 50%

This commit is contained in:
rishab 2020-03-25 21:51:21 +05:30
parent 5079b5e3ae
commit 11f732361d
2 changed files with 99 additions and 61 deletions

View File

@ -8,12 +8,13 @@ import android.database.sqlite.SQLiteOpenHelper;
import com.example.alzapp.QuizContract.* ; import com.example.alzapp.QuizContract.* ;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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 static final int DATABASE_VERSION = 1;
private SQLiteDatabase db; private SQLiteDatabase db;
@ -24,7 +25,6 @@ public class QuizDbHelper extends SQLiteOpenHelper {
@Override @Override
public void onCreate(SQLiteDatabase db) { public void onCreate(SQLiteDatabase db) {
this.db = db; this.db = db;
final String SQL_CREATE_QUESTIONS_TABLE = "CREATE TABLE " + final String SQL_CREATE_QUESTIONS_TABLE = "CREATE TABLE " +
@ -38,66 +38,56 @@ public class QuizDbHelper extends SQLiteOpenHelper {
")"; ")";
db.execSQL(SQL_CREATE_QUESTIONS_TABLE); db.execSQL(SQL_CREATE_QUESTIONS_TABLE);
fillQuestionsTable(); fillQuestionsTable();
} }
@Override @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + QuestionsTable.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + QuestionsTable.TABLE_NAME);
onCreate(db); onCreate(db);
} }
private void fillQuestionsTable(){ private void fillQuestionsTable() {
Question q1 = new Question("A is correct", "A", "B", "C", 1); Question q1 = new Question("A is correct", "A", "B", "C", 1);
addQuestion(q1); addQuestion(q1);
Question q2 = new Question("B is correct", "A", "B", "C", 2); Question q2 = new Question("B is correct", "A", "B", "C", 2);
addQuestion(q2); addQuestion(q2);
Question q3 = new Question("C is correct", "A", "B", "C", 3); Question q3 = new Question("C is correct", "A", "B", "C", 3);
addQuestion(q3); addQuestion(q3);
Question q4 = new Question("A is correct again", "A", "B", "C", 1); Question q4 = new Question("A is correct again", "A", "B", "C", 1);
addQuestion(q4); addQuestion(q4);
Question q5 = new Question("B is correct again", "A", "B", "C", 2); Question q5 = new Question("B is correct again", "A", "B", "C", 2);
addQuestion(q5); addQuestion(q5);
} }
private void addQuestion(Question question){ private void addQuestion(Question question) {
ContentValues cv = new ContentValues(); ContentValues cv = new ContentValues();
cv.put(QuestionsTable.COLUMN_QUESTION, question.getQuestion()); 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_OPTION1, question.getOption1());
cv.put(QuestionsTable.COLUMN_OPTION2, question.getOption2()); cv.put(QuestionsTable.COLUMN_OPTION2, question.getOption2());
cv.put(QuestionsTable.COLUMN_OPTION3, question.getOption3()); cv.put(QuestionsTable.COLUMN_OPTION3, question.getOption3());
cv.put(QuestionsTable.COLUMN_ANSWER_NR, question.getAnswerNr()); cv.put(QuestionsTable.COLUMN_ANSWER_NR, question.getAnswerNr());
db.insert(QuestionsTable.TABLE_NAME, null, cv); db.insert(QuestionsTable.TABLE_NAME, null, cv);
} }
public List<Question> getAllQuestions() {
List<Question> questionList = new ArrayList<>();
db = getReadableDatabase();
Cursor c = db.rawQuery("SELECT * FROM " + QuestionsTable.TABLE_NAME, null);
public List<Question> getAllQuestions(){ if (c.moveToFirst()) {
List<Question> questionList = new ArrayList<>(); do {
db = getReadableDatabase(); Question question = new Question();
Cursor c = db.rawQuery("SELECT * FROM " + QuestionsTable.TABLE_NAME, null); question.setQuestion(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_QUESTION)));
question.setOption1(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_OPTION1)));
if(c.moveToFirst()){ question.setOption2(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_OPTION2)));
do{ question.setOption3(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_OPTION3)));
Question question = new Question(); question.setAnswerNr(c.getInt(c.getColumnIndex(QuestionsTable.COLUMN_ANSWER_NR)));
question.setQuestion(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_QUESTION))); questionList.add(question);
question.setOption1(c.getString(c.getColumnIndex(QuestionsTable.COLUMN_OPTION1))); } while (c.moveToNext());
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());
}
c.close(); c.close();
return questionList; return questionList;
} }
} }

View File

@ -1,22 +1,23 @@
package com.example.alzapp; package com.example.alzapp;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.RadioButton; import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
public class QuizQuestionPage extends AppCompatActivity { public class QuizQuestionPage extends AppCompatActivity {
private TextView textViewQuestion; private TextView textViewQuestion;
private TextView textViewScore; private TextView textViewScore;
private TextView textViewQuestionCount ; private TextView textViewQuestionCount;
private TextView textViewCountDown; private TextView textViewCountDown;
private RadioGroup rbGroup; private RadioGroup rbGroup;
private RadioButton rb1; private RadioButton rb1;
@ -26,7 +27,6 @@ public class QuizQuestionPage extends AppCompatActivity {
private ColorStateList textColorDefaultRb; private ColorStateList textColorDefaultRb;
private List<Question> questionList; private List<Question> questionList;
private int questionCounter; private int questionCounter;
private int questionCountTotal; private int questionCountTotal;
@ -50,6 +50,7 @@ public class QuizQuestionPage extends AppCompatActivity {
rb3 = findViewById(R.id.radioButton32); rb3 = findViewById(R.id.radioButton32);
buttonConfirmNext = findViewById(R.id.quiz_confirm_next); buttonConfirmNext = findViewById(R.id.quiz_confirm_next);
textColorDefaultRb = rb1.getTextColors(); textColorDefaultRb = rb1.getTextColors();
QuizDbHelper dbHelper = new QuizDbHelper(this); QuizDbHelper dbHelper = new QuizDbHelper(this);
@ -59,40 +60,87 @@ public class QuizQuestionPage extends AppCompatActivity {
showNextQuestion(); 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); rb1.setTextColor(textColorDefaultRb);
rb2.setTextColor(textColorDefaultRb); rb2.setTextColor(textColorDefaultRb);
rb3.setTextColor(textColorDefaultRb); rb3.setTextColor(textColorDefaultRb);
rbGroup.clearCheck(); rbGroup.clearCheck();
if ( questionCounter < questionCountTotal){ if (questionCounter < questionCountTotal) {
currentQuestion = questionList.get(questionCounter); currentQuestion = questionList.get(questionCounter);
textViewQuestion.setText(currentQuestion.getQuestion()); textViewQuestion.setText(currentQuestion.getQuestion());
rb1.setText(currentQuestion.getOption1()); rb1.setText(currentQuestion.getOption1());
rb2.setText(currentQuestion.getOption2()); rb2.setText(currentQuestion.getOption2());
rb3.setText(currentQuestion.getOption3()); rb3.setText(currentQuestion.getOption3());
questionCounter++; questionCounter++;
textViewQuestionCount.setText("Question: "+ questionCounter + "/" + questionCountTotal); textViewQuestionCount.setText("Question: " + questionCounter + "/" + questionCountTotal);
answered = false; answered = false;
buttonConfirmNext.setText("Confirm"); buttonConfirmNext.setText("Confirm");
} } else {
finishQuiz();
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(); finish();
} }
}
}