Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.danyal.quizapp;
- import android.content.Context;
- import android.graphics.Color;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.inputmethod.InputMethodManager;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.LinearLayout;
- import android.widget.RadioButton;
- import android.widget.RadioGroup;
- import android.widget.TextView;
- import android.widget.Toast;
- public class MainActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- setQuestion(1);
- }
- int currentQuestion = 1;
- int correctAnswer = 1;
- int score = 0;
- String name = "";
- String questionType = "";
- boolean lastQuestion = false;
- int numberOfQuestions = 1;
- double percentage = 0.0;
- /**
- * This method access the questions in the string-array questions and updates the
- * questionTextView with the next question and the RadioGroup with the next set of answer
- * choices
- * @param questionNumber
- */
- private void setQuestion(int questionNumber) {
- TextView questionTextView = (TextView) findViewById(R.id.radio_button_question);
- ((TextView) findViewById(R.id.question_number)).setText("Question "+questionNumber);
- numberOfQuestions = questionNumber;
- String[] questions = getResources().getStringArray(R.array.questions);
- if (questions.length == questionNumber) {
- lastQuestion = true;
- }
- for(String question : questions) {
- String[] pair = question.split(":");
- int key = Integer.valueOf(pair[0]);
- questionType = pair[1];
- String questionText = pair[3];
- String[] answerChoices = pair[4].split(",");
- if (questionNumber == key) {
- questionTextView.setText(questionText);
- correctAnswer = Integer.valueOf(pair[2]);
- switch (questionType) {
- /**
- * RadioButton type
- */
- case "radio":
- RadioButton aChoiceRadioButton = (RadioButton) findViewById(R.id.a_radio_button);
- RadioButton bChoiceRadioButton = (RadioButton) findViewById(R.id.b_radio_button);
- RadioButton cChoiceRadioButton = (RadioButton) findViewById(R.id.c_radio_button);
- RadioButton dChoiceRadioButton = (RadioButton) findViewById(R.id.d_radio_button);
- aChoiceRadioButton.setText(answerChoices[0]);
- bChoiceRadioButton.setText(answerChoices[1]);
- cChoiceRadioButton.setText(answerChoices[2]);
- dChoiceRadioButton.setText(answerChoices[3]);
- break;
- case "textbox":
- break;
- }
- }
- }
- }
- /**
- * This method hides the startButton and the nameField and makes the questionLayout visible
- * before calling for the next question.
- * @param view
- */
- public void startQuiz(View view) {
- Button startButton = (Button) findViewById(R.id.start_button);
- startButton.setVisibility(View.GONE);
- EditText nameField = (EditText) findViewById(R.id.name_field);
- nameField.setVisibility(View.GONE);
- name = nameField.getText().toString();
- LinearLayout questionLayout = (LinearLayout) findViewById(R.id.question_layout);
- questionLayout.setVisibility(View.VISIBLE);
- setQuestion(currentQuestion);
- }
- /**
- * Prepares the MainActivity for the next question
- * @param view
- */
- public void nextQuestion(View view) {
- if (!lastQuestion) {
- TextView answerTextView = (TextView) findViewById(R.id.answer_text_view);
- answerTextView.setVisibility(View.GONE);
- Button nextQuestionButton = (Button) findViewById(R.id.next_question_button);
- nextQuestionButton.setVisibility(View.GONE);
- RadioGroup radioButtonGroup = (RadioGroup) findViewById(R.id.radio_button_group);
- int radioButtonID = radioButtonGroup.getCheckedRadioButtonId();
- RadioButton radioButton = (RadioButton) radioButtonGroup.findViewById(radioButtonID);
- radioButton.setChecked(false);
- radioButton.setTextColor(Color.BLACK);
- Button submitButton = (Button) findViewById(R.id.submit_button);
- submitButton.setVisibility(View.VISIBLE);
- currentQuestion += 1;
- setQuestion(currentQuestion);
- }
- else { displayScore(); }
- }
- /**
- * Display the final score after the questions are finished
- */
- private void displayScore() {
- TextView answerTextView = (TextView) findViewById(R.id.answer_text_view);
- answerTextView.setVisibility(View.GONE);
- Button nextQuestionButton = (Button) findViewById(R.id.next_question_button);
- nextQuestionButton.setVisibility(View.GONE);
- LinearLayout questionLayout = (LinearLayout) findViewById(R.id.question_layout);
- questionLayout.setVisibility(View.GONE);
- TextView displayScore = (TextView) findViewById(R.id.display_score);
- if (percentage == 100.0) {
- String finalMessage = "Congrats, " + name + ", you had a perfect score!!";
- displayScore.setText(finalMessage);
- }
- else {
- String finalMessage = "Game is over, " + name + ", you had a score of " + percentage +
- "%. Better luck next time!";
- displayScore.setText(finalMessage);
- }
- displayScore.setVisibility(View.VISIBLE);
- }
- /**
- * Checks if the submitted answer is correct
- * @param view
- */
- public void checkAnswer(View view) {
- TextView answerTextView = (TextView) findViewById(R.id.answer_text_view);
- answerTextView.setVisibility(View.VISIBLE);
- Button nextQuestionButton = (Button) findViewById(R.id.next_question_button);
- nextQuestionButton.setVisibility(View.VISIBLE);
- Button submitButton = (Button) findViewById(R.id.submit_button);
- submitButton.setVisibility(View.GONE);
- switch(questionType) {
- case "radio":
- RadioGroup radioButtonGroup = (RadioGroup) findViewById(R.id.radio_button_group);
- int radioButtonID = radioButtonGroup.getCheckedRadioButtonId();
- RadioButton radioButton = (RadioButton) radioButtonGroup.findViewById(radioButtonID);
- int idx = radioButtonGroup.indexOfChild(radioButton);
- //radioButton.setChecked(false);
- Log.v("MainActivity", "Answers " + idx + correctAnswer);
- if (idx == correctAnswer) {
- score += 1;
- radioButton.setTextColor(Color.GREEN);
- answerTextView.setText("Correct!!");
- answerTextView.setTextColor(Color.GREEN);
- Log.v("MainActivity", "Score is " + score);
- } else {
- radioButton.setTextColor(Color.RED);
- answerTextView.setText("Incorrect");
- answerTextView.setTextColor(Color.RED);
- }
- radioButtonGroup.setEnabled(false);
- break;
- case "textbox":
- }
- percentage = score*100/numberOfQuestions;
- Toast.makeText(getApplicationContext(), "Score: " + percentage +"%", Toast.LENGTH_SHORT).show();
- }
- }
Add Comment
Please, Sign In to add comment