Advertisement
Guest User

Untitled

a guest
Dec 5th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.57 KB | None | 0 0
  1. package pszczolkowskisebastian.simplequiz.ui;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.support.annotation.Nullable;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.text.TextUtils;
  9. import android.util.Log;
  10. import android.widget.ImageView;
  11. import android.widget.ProgressBar;
  12. import android.widget.RadioButton;
  13. import android.widget.RadioGroup;
  14. import android.widget.TextView;
  15. import com.squareup.picasso.Picasso;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import pszczolkowskisebastian.simplequiz.R;
  19. import pszczolkowskisebastian.simplequiz.controller.RetrofitManager;
  20. import pszczolkowskisebastian.simplequiz.model.gsonQuestion.Answer;
  21. import pszczolkowskisebastian.simplequiz.model.gsonQuestion.Question;
  22. import pszczolkowskisebastian.simplequiz.model.gsonQuestion.QuestionObject;
  23. import pszczolkowskisebastian.simplequiz.model.gsonTitle.QuizTitleBranch;
  24. import pszczolkowskisebastian.simplequiz.model.helper.Constants;
  25. import retrofit2.Call;
  26. import retrofit2.Callback;
  27. import retrofit2.Response;
  28.  
  29. import static android.view.View.GONE;
  30.  
  31. /**
  32. * Created by Sebastian on 01.12.2016.
  33. */
  34.  
  35. public class QuestionActivity extends AppCompatActivity {
  36.  
  37. private ImageView questionPicture;
  38.  
  39. private static final String TAG = QuestionActivity.class.getSimpleName();
  40. private TextView questionTextView;
  41. private RadioButton answer1, answer2, answer3, answer4;
  42.  
  43. private RetrofitManager myQuestionManager;
  44.  
  45. private List<RadioButton> answerRadioButtonList = new ArrayList<>();
  46. private List<Question> questionsList = new ArrayList<>();
  47. private int questionCurrentIndex = 0;
  48. private RadioGroup answersRadioGroup;
  49. private QuizTitleBranch quizTitleBranch; //quiz title from first activity
  50. private TextView quizTitle; //quiz title to view in this activity
  51. private int correctAnswers = 0;
  52.  
  53. private ProgressBar progressBar;
  54. private TextView progressStatusValue;
  55. private QuestionObject myQuestionObject;
  56. private List<Integer> answerRadioButtonIdsList = new ArrayList<>();
  57.  
  58. @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
  59.  
  60. super.onCreate(savedInstanceState);
  61. setContentView(R.layout.activity_question);
  62.  
  63. initGettingExtras();
  64. initViews();
  65. initRetrofit();
  66. }
  67.  
  68. private void initGettingExtras() {
  69.  
  70. quizTitleBranch = getIntent().getExtras().getParcelable(Constants.REFERENCE.QUIZ);
  71. }
  72.  
  73. private void initViews() {
  74.  
  75. questionPicture = (ImageView) findViewById(R.id.questionPicture);
  76.  
  77. questionTextView = (TextView) findViewById(R.id.textViewQuestion);
  78. progressBar = (ProgressBar) findViewById(R.id.progressBar);
  79. progressStatusValue = (TextView) findViewById(R.id.progressBarInfo);
  80. quizTitle = (TextView) findViewById(R.id.quizTitle);
  81.  
  82. quizTitle.setText(quizTitleBranch.title);
  83.  
  84. answer1 = (RadioButton) findViewById(R.id.radioButtonAnswer1);
  85. answer2 = (RadioButton) findViewById(R.id.radioButtonAnswer2);
  86. answer3 = (RadioButton) findViewById(R.id.radioButtonAnswer3);
  87. answer4 = (RadioButton) findViewById(R.id.radioButtonAnswer4);
  88.  
  89. answersRadioGroup = (RadioGroup) findViewById(R.id.radioGroup);
  90.  
  91. answerRadioButtonList.add(answer1);
  92. answerRadioButtonList.add(answer2);
  93. answerRadioButtonList.add(answer3);
  94. answerRadioButtonList.add(answer4);
  95.  
  96. // answer IDs list:
  97. answerRadioButtonIdsList.add(R.id.radioButtonAnswer1);
  98. answerRadioButtonIdsList.add(R.id.radioButtonAnswer2);
  99. answerRadioButtonIdsList.add(R.id.radioButtonAnswer3);
  100. answerRadioButtonIdsList.add(R.id.radioButtonAnswer4);
  101.  
  102. answersRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
  103. @Override public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
  104.  
  105. RadioButton checkedRadioButton = (RadioButton) radioGroup.findViewById(checkedId);
  106. checkIfAnswerIsCorrect(checkedRadioButton);
  107.  
  108. initNextQuestionUI();
  109. }
  110. });
  111. }
  112.  
  113. private void checkIfAnswerIsCorrect(RadioButton checkedRadioButton) { /*TODO*/
  114.  
  115. final Question currentQuestion = getCurrentQuestion();
  116. final String checkedAnswerText = (String) checkedRadioButton.getText();
  117.  
  118. int correctAnswerIndex = getCorrectAnswerIndex(currentQuestion.getAnswers());
  119. int checkedRadioButtonIndex = getCheckedRadioButtonIndex(checkedRadioButton);
  120.  
  121. if (correctAnswerIndex == checkedRadioButtonIndex) { // CORRECT ANSWER:
  122. correctAnswers++;
  123. } else { // INCORRECT:
  124.  
  125. }
  126.  
  127. /*for (Answer answer : currentQuestion.getAnswers()) {
  128.  
  129. final Integer isCorrect = answer.getIsCorrect();
  130. final boolean isTheAnswerCorrect = isCorrect != null && isCorrect == 1;
  131.  
  132. if (isTheAnswerCorrect) {
  133. if (checkedAnswerText.equals(answer.getText())) {
  134.  
  135. correctAnswers++;
  136. }
  137. }
  138. }*/
  139. }
  140.  
  141. private int getCheckedRadioButtonIndex(RadioButton checkedRadioButton) {
  142. for (int i = 0; i < answerRadioButtonIdsList.size(); i++) {
  143. final Integer radioId = answerRadioButtonIdsList.get(i);
  144. if (checkedRadioButton.getId() == radioId) {
  145. return i;
  146. }
  147. }
  148. return -1;
  149. }
  150.  
  151. private int getCorrectAnswerIndex(List<Answer> answers) {
  152. for (int i = 0; i < answers.size(); i++) {
  153. final Answer answer = answers.get(i);
  154. final boolean isAnswerCorrect = answer.getIsCorrect() != null && answer.getIsCorrect() == 1;
  155. if (isAnswerCorrect) {
  156. return i;
  157. }
  158. }
  159. return -1;
  160. }
  161.  
  162. private void initRetrofit() {
  163. myQuestionManager = new RetrofitManager();
  164.  
  165. final Call<QuestionObject> questionObject =
  166. myQuestionManager.getMyRetrofitServiceQuestion().getAllQuestions(quizTitleBranch.id);
  167.  
  168. questionObject.enqueue(new Callback<QuestionObject>() {
  169. @Override
  170. public void onResponse(Call<QuestionObject> call, Response<QuestionObject> response) {
  171. if (response.body() == null) return;
  172.  
  173. myQuestionObject = response.body();
  174. questionsList = response.body().getQuestions();
  175.  
  176. int questionsListSize = questionsList.size() - 1;
  177. progressStatusValue.setText(questionCurrentIndex + "/" + questionsListSize);
  178.  
  179. initQuestionUI(questionsList.get(0));
  180. questionCurrentIndex++;
  181. }
  182.  
  183. @Override public void onFailure(Call<QuestionObject> call, Throwable t) {
  184. Log.d(TAG, "onFailure() called with: call = [" + call + "], t = [" + t + "]");
  185. }
  186. });
  187. }
  188.  
  189. private void initNextQuestionUI() {
  190.  
  191. if (questionCurrentIndex >= questionsList.size() - 1) {
  192.  
  193. finishQuiz();
  194. return;
  195. }
  196.  
  197. initQuestionUI(getCurrentQuestion());
  198.  
  199. countForProgressBar();
  200.  
  201. questionCurrentIndex++;
  202.  
  203. // clear check:
  204. for (RadioButton radioButton : answerRadioButtonList) {
  205. radioButton.setChecked(false);
  206. }
  207.  
  208. // add to DB Realm
  209. }
  210.  
  211. private Question getCurrentQuestion() {
  212. return questionsList.get(questionCurrentIndex);
  213. }
  214.  
  215. private void countForProgressBar() {
  216.  
  217. int questionListSize = questionsList.size() - 1;
  218. progressStatusValue.setText(questionCurrentIndex + " / " + questionListSize);
  219.  
  220. progressBar.setMax(questionsList.size() - 1);
  221. progressBar.setProgress(questionCurrentIndex);
  222. }
  223.  
  224. private void finishQuiz() {
  225. Log.d(TAG, "finishQuiz: result = " + correctAnswers);
  226.  
  227. Intent intent = new Intent(this, FinalActivity.class);
  228. final int questionsCount = myQuestionObject.getQuestions().size();
  229.  
  230. int percentOfCorrectAnswers = (correctAnswers * 100) / questionsCount;
  231. intent.putExtra("result", percentOfCorrectAnswers);
  232. intent.putExtra(Constants.REFERENCE.QUIZ, quizTitleBranch);
  233. startActivity(intent);
  234. }
  235.  
  236. private void initQuestionUI(Question question) {
  237.  
  238. questionTextView.setText(question.getText());
  239.  
  240. Context context = getApplicationContext();
  241. if (question == null) return;
  242.  
  243. initImage(question, context);
  244. // init answers:
  245. for (int i = 0; i < question.getAnswers().size(); i++) {
  246.  
  247. Answer answer = question.getAnswers().get(i);
  248. RadioButton radioButton = answerRadioButtonList.get(i);
  249. radioButton.setText(answer.getText());
  250. }
  251.  
  252. hideUnusedRadioButtons(question);
  253. }
  254.  
  255. private void initImage(Question question, Context context) {
  256. if (question.getImage() != null || question.getImage().getUrl() != null) {
  257. String imageUrl = question.getImage().getUrl();
  258. if (imageUrl != null && !TextUtils.isEmpty(imageUrl)) {
  259. Picasso.with(context).load(imageUrl).into(questionPicture);
  260. }
  261. }
  262. }
  263.  
  264. private void hideUnusedRadioButtons(Question question) {
  265. for (int i = question.getAnswers().size(); i < answerRadioButtonList.size(); i++) {
  266. RadioButton radioButton = answerRadioButtonList.get(i);
  267. radioButton.setVisibility(GONE);
  268. }
  269. }
  270. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement