Guest User

Untitled

a guest
Apr 20th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.66 KB | None | 0 0
  1. package com.example.danyal.quizapp;
  2.  
  3. import android.content.Context;
  4. import android.graphics.Color;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.view.inputmethod.InputMethodManager;
  10. import android.widget.Button;
  11. import android.widget.EditText;
  12. import android.widget.LinearLayout;
  13. import android.widget.RadioButton;
  14. import android.widget.RadioGroup;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17.  
  18. public class MainActivity extends AppCompatActivity {
  19.  
  20.  
  21.  
  22. @Override
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.activity_main);
  26.  
  27.  
  28. setQuestion(1);
  29.  
  30. }
  31.  
  32. int currentQuestion = 1;
  33. int correctAnswer = 1;
  34. int score = 0;
  35. String name = "";
  36. String questionType = "";
  37. boolean lastQuestion = false;
  38. int numberOfQuestions = 1;
  39. double percentage = 0.0;
  40.  
  41.  
  42. /**
  43. * This method access the questions in the string-array questions and updates the
  44. * questionTextView with the next question and the RadioGroup with the next set of answer
  45. * choices
  46. * @param questionNumber
  47. */
  48. private void setQuestion(int questionNumber) {
  49. TextView questionTextView = (TextView) findViewById(R.id.radio_button_question);
  50.  
  51. ((TextView) findViewById(R.id.question_number)).setText("Question "+questionNumber);
  52. numberOfQuestions = questionNumber;
  53.  
  54. String[] questions = getResources().getStringArray(R.array.questions);
  55. if (questions.length == questionNumber) {
  56. lastQuestion = true;
  57.  
  58. }
  59.  
  60. for(String question : questions) {
  61. String[] pair = question.split(":");
  62. int key = Integer.valueOf(pair[0]);
  63. questionType = pair[1];
  64. String questionText = pair[3];
  65. String[] answerChoices = pair[4].split(",");
  66.  
  67. if (questionNumber == key) {
  68. questionTextView.setText(questionText);
  69. correctAnswer = Integer.valueOf(pair[2]);
  70. switch (questionType) {
  71. /**
  72. * RadioButton type
  73. */
  74. case "radio":
  75. RadioButton aChoiceRadioButton = (RadioButton) findViewById(R.id.a_radio_button);
  76. RadioButton bChoiceRadioButton = (RadioButton) findViewById(R.id.b_radio_button);
  77. RadioButton cChoiceRadioButton = (RadioButton) findViewById(R.id.c_radio_button);
  78. RadioButton dChoiceRadioButton = (RadioButton) findViewById(R.id.d_radio_button);
  79. aChoiceRadioButton.setText(answerChoices[0]);
  80. bChoiceRadioButton.setText(answerChoices[1]);
  81. cChoiceRadioButton.setText(answerChoices[2]);
  82. dChoiceRadioButton.setText(answerChoices[3]);
  83. break;
  84.  
  85. case "textbox":
  86. break;
  87. }
  88. }
  89. }
  90. }
  91. /**
  92. * This method hides the startButton and the nameField and makes the questionLayout visible
  93. * before calling for the next question.
  94. * @param view
  95. */
  96. public void startQuiz(View view) {
  97.  
  98. Button startButton = (Button) findViewById(R.id.start_button);
  99. startButton.setVisibility(View.GONE);
  100. EditText nameField = (EditText) findViewById(R.id.name_field);
  101. nameField.setVisibility(View.GONE);
  102. name = nameField.getText().toString();
  103. LinearLayout questionLayout = (LinearLayout) findViewById(R.id.question_layout);
  104. questionLayout.setVisibility(View.VISIBLE);
  105. setQuestion(currentQuestion);
  106. }
  107.  
  108. /**
  109. * Prepares the MainActivity for the next question
  110. * @param view
  111. */
  112. public void nextQuestion(View view) {
  113.  
  114. if (!lastQuestion) {
  115.  
  116. TextView answerTextView = (TextView) findViewById(R.id.answer_text_view);
  117. answerTextView.setVisibility(View.GONE);
  118. Button nextQuestionButton = (Button) findViewById(R.id.next_question_button);
  119. nextQuestionButton.setVisibility(View.GONE);
  120.  
  121. RadioGroup radioButtonGroup = (RadioGroup) findViewById(R.id.radio_button_group);
  122. int radioButtonID = radioButtonGroup.getCheckedRadioButtonId();
  123. RadioButton radioButton = (RadioButton) radioButtonGroup.findViewById(radioButtonID);
  124. radioButton.setChecked(false);
  125. radioButton.setTextColor(Color.BLACK);
  126. Button submitButton = (Button) findViewById(R.id.submit_button);
  127. submitButton.setVisibility(View.VISIBLE);
  128.  
  129.  
  130.  
  131. currentQuestion += 1;
  132. setQuestion(currentQuestion);
  133. }
  134. else { displayScore(); }
  135. }
  136.  
  137. /**
  138. * Display the final score after the questions are finished
  139. */
  140. private void displayScore() {
  141. TextView answerTextView = (TextView) findViewById(R.id.answer_text_view);
  142. answerTextView.setVisibility(View.GONE);
  143. Button nextQuestionButton = (Button) findViewById(R.id.next_question_button);
  144. nextQuestionButton.setVisibility(View.GONE);
  145. LinearLayout questionLayout = (LinearLayout) findViewById(R.id.question_layout);
  146. questionLayout.setVisibility(View.GONE);
  147.  
  148. TextView displayScore = (TextView) findViewById(R.id.display_score);
  149.  
  150. if (percentage == 100.0) {
  151. String finalMessage = "Congrats, " + name + ", you had a perfect score!!";
  152. displayScore.setText(finalMessage);
  153. }
  154. else {
  155. String finalMessage = "Game is over, " + name + ", you had a score of " + percentage +
  156. "%. Better luck next time!";
  157. displayScore.setText(finalMessage);
  158. }
  159. displayScore.setVisibility(View.VISIBLE);
  160.  
  161.  
  162. }
  163.  
  164. /**
  165. * Checks if the submitted answer is correct
  166. * @param view
  167. */
  168. public void checkAnswer(View view) {
  169.  
  170. TextView answerTextView = (TextView) findViewById(R.id.answer_text_view);
  171. answerTextView.setVisibility(View.VISIBLE);
  172. Button nextQuestionButton = (Button) findViewById(R.id.next_question_button);
  173. nextQuestionButton.setVisibility(View.VISIBLE);
  174. Button submitButton = (Button) findViewById(R.id.submit_button);
  175. submitButton.setVisibility(View.GONE);
  176.  
  177. switch(questionType) {
  178. case "radio":
  179. RadioGroup radioButtonGroup = (RadioGroup) findViewById(R.id.radio_button_group);
  180. int radioButtonID = radioButtonGroup.getCheckedRadioButtonId();
  181. RadioButton radioButton = (RadioButton) radioButtonGroup.findViewById(radioButtonID);
  182. int idx = radioButtonGroup.indexOfChild(radioButton);
  183. //radioButton.setChecked(false);
  184. Log.v("MainActivity", "Answers " + idx + correctAnswer);
  185. if (idx == correctAnswer) {
  186. score += 1;
  187. radioButton.setTextColor(Color.GREEN);
  188. answerTextView.setText("Correct!!");
  189. answerTextView.setTextColor(Color.GREEN);
  190. Log.v("MainActivity", "Score is " + score);
  191. } else {
  192. radioButton.setTextColor(Color.RED);
  193. answerTextView.setText("Incorrect");
  194. answerTextView.setTextColor(Color.RED);
  195. }
  196. radioButtonGroup.setEnabled(false);
  197. break;
  198. case "textbox":
  199. }
  200. percentage = score*100/numberOfQuestions;
  201. Toast.makeText(getApplicationContext(), "Score: " + percentage +"%", Toast.LENGTH_SHORT).show();
  202.  
  203. }
  204.  
  205. }
Add Comment
Please, Sign In to add comment