diff --git a/app/src/main/java/com/example/alzapp/Question.java b/app/src/main/java/com/example/alzapp/Question.java new file mode 100644 index 0000000..65a5f6e --- /dev/null +++ b/app/src/main/java/com/example/alzapp/Question.java @@ -0,0 +1,65 @@ +package com.example.alzapp; + +public class Question { + + private String question; + private String option1; + private String option2; + private String option3; + private int answerNr; + + + public Question(){} + + public Question(String question, String option1, String option2, String option3, int answerNr) { + this.question = question; + this.option1 = option1; + this.option2 = option2; + this.option3 = option3; + this.answerNr = answerNr; + } + + + /** Getter and setter methods **/ + + + public String getQuestion() { + return question; + } + + public void setQuestion(String question) { + this.question = question; + } + + public String getOption1() { + return option1; + } + + public void setOption1(String option1) { + this.option1 = option1; + } + + public String getOption2() { + return option2; + } + + public void setOption2(String option2) { + this.option2 = option2; + } + + public String getOption3() { + return option3; + } + + public void setOption3(String option3) { + this.option3 = option3; + } + + public int getAnswerNr() { + return answerNr; + } + + public void setAnswerNr(int answerNr) { + this.answerNr = answerNr; + } +} diff --git a/app/src/main/java/com/example/alzapp/QuizContract.java b/app/src/main/java/com/example/alzapp/QuizContract.java new file mode 100644 index 0000000..965ccf8 --- /dev/null +++ b/app/src/main/java/com/example/alzapp/QuizContract.java @@ -0,0 +1,18 @@ +package com.example.alzapp; + +import android.provider.BaseColumns; + +public final class QuizContract { + + private QuizContract(){} + + public static class QuestionsTable implements BaseColumns { + public static final String TABLE_NAME = "quiz_questions"; + public static final String COLUMN_QUESTION = "question"; + public static final String COLUMN_OPTION1 = "option1"; + public static final String COLUMN_OPTION2 = "option2"; + public static final String COLUMN_OPTION3 = "option3"; + public static final String COLUMN_ANSWER_NR = "answer_nr"; + + } +} diff --git a/app/src/main/java/com/example/alzapp/QuizDbHelper.java b/app/src/main/java/com/example/alzapp/QuizDbHelper.java new file mode 100644 index 0000000..ada248f --- /dev/null +++ b/app/src/main/java/com/example/alzapp/QuizDbHelper.java @@ -0,0 +1,103 @@ +package com.example.alzapp; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +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"; + private static final int DATABASE_VERSION = 1; + + private SQLiteDatabase db; + + public QuizDbHelper(Context context) { + super(context, DATABASE_NAME, null, DATABASE_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + + this.db = db; + + final String SQL_CREATE_QUESTIONS_TABLE = "CREATE TABLE " + + QuestionsTable.TABLE_NAME + " ( " + + QuestionsTable._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + + QuestionsTable.COLUMN_QUESTION + " TEXT, " + + QuestionsTable.COLUMN_OPTION1 + " TEXT, " + + QuestionsTable.COLUMN_OPTION2 + " TEXT, " + + QuestionsTable.COLUMN_OPTION3 + " TEXT, " + + QuestionsTable.COLUMN_ANSWER_NR + " INTEGER" + + ")"; + + 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); + } + + 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){ + 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); + + 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()); + } + + c.close(); + return questionList; + } +} diff --git a/app/src/main/java/com/example/alzapp/QuizQuestionPage.java b/app/src/main/java/com/example/alzapp/QuizQuestionPage.java index 3c2ef16..8c02020 100644 --- a/app/src/main/java/com/example/alzapp/QuizQuestionPage.java +++ b/app/src/main/java/com/example/alzapp/QuizQuestionPage.java @@ -1,15 +1,86 @@ package com.example.alzapp; +import android.content.res.ColorStateList; import android.os.Bundle; +import android.widget.Button; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.TextView; 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 textViewCountDown; + private RadioGroup rbGroup; + private RadioButton rb1; + private RadioButton rb2; + private RadioButton rb3; + private Button buttonConfirmNext; + + private ColorStateList textColorDefaultRb; + + + private List questionList; + private int questionCounter; + private int questionCountTotal; + private Question currentQuestion; + + private int score; + private boolean answered; + + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_quiz_question_page); + textViewQuestion = findViewById(R.id.quiz_question); + textViewScore = findViewById(R.id.quiz_score); + textViewQuestionCount = findViewById(R.id.quiz_question_counter); + textViewCountDown = findViewById(R.id.quiz_Timer); + rbGroup = findViewById(R.id.quiz_radio_group); + rb1 = findViewById(R.id.radioButton30); + rb2 = findViewById(R.id.radioButton31); + rb3 = findViewById(R.id.radioButton32); + buttonConfirmNext = findViewById(R.id.quiz_confirm_next); + + QuizDbHelper dbHelper = new QuizDbHelper(this); + questionList = dbHelper.getAllQuestions(); + questionCountTotal = questionList.size(); + Collections.shuffle(questionList); + + showNextQuestion(); } + + private void showNextQuestion(){ + rb1.setTextColor(textColorDefaultRb); + rb2.setTextColor(textColorDefaultRb); + rb3.setTextColor(textColorDefaultRb); + rbGroup.clearCheck(); + + if ( questionCounter < questionCountTotal){ + currentQuestion = questionList.get(questionCounter); + + 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 { + finish(); + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_quick_play_menu.xml b/app/src/main/res/layout/activity_quick_play_menu.xml index 8a9c4af..5313e10 100644 --- a/app/src/main/res/layout/activity_quick_play_menu.xml +++ b/app/src/main/res/layout/activity_quick_play_menu.xml @@ -11,8 +11,8 @@ +