private String getQuestionImageUrl(int number) {
   Question question = (Question) mQuestions.get(number);
   if (question != null) {
     return question.getImageUrl();
   }
   return null;
 }
Esempio n. 2
0
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);

    final TextView qNo = (TextView) findViewById(R.id.textViewQuesNo);
    ques = (TextView) findViewById(R.id.textViewQuestion);
    rgOptions = (RadioGroup) findViewById(R.id.radioGroupOptions);
    Button nextBtn = (Button) findViewById(R.id.buttonStartQuiz);
    quesImage = (ImageView) findViewById(R.id.imageViewQuizQues);
    spinner = (ProgressBar) findViewById(R.id.progressBarLoadingImage);
    spinner.setVisibility(View.GONE);

    questionArrayList = getIntent().getParcelableArrayListExtra("QuestionList");

    final ArrayList<String> questions = new ArrayList<String>();
    final ArrayList<String> imageUrls = new ArrayList<String>();
    for (final Question q : questionArrayList) {
      for (int k = 0; k < q.getHashMap().keySet().size(); k++) {
        questions.add(q.getHashMap().keySet().iterator().next().toString());
        if (q.getImageUrl() != null) {
          imageUrls.add(q.getImageUrl());
        } else if (q.getImageUrl() == null) {
          imageUrls.add("null");
        }
      }
    }
    qNo.setText(String.format("Q%s", String.valueOf(index + 1)));
    ques.setText(questions.get(0));
    new GetImageAsyncTask().execute(imageUrls.get(0));
    // Log.d("Questions Array",
    // questionArrayList.get(0).getOptionsList(questions.get(0)).toString());
    for (int kk = 0; kk < questionArrayList.get(0).getScores().length; kk++)
      Log.d("Question 0 Score", questionArrayList.get(0).getScores()[kk].toString());
    ques.setText(questions.get(0));
    ArrayList<String> optionsArray = questionArrayList.get(0).getOptionsList(questions.get(0));
    HashMap<String, Integer> keyVal = new HashMap<String, Integer>();
    for (int i = 0; i < optionsArray.size(); i++) {
      keyVal.put(optionsArray.get(i), Integer.valueOf(questionArrayList.get(0).getScores()[i]));
    }
    List<Map.Entry<String, Integer>> list =
        new ArrayList<Map.Entry<String, Integer>>(keyVal.entrySet());
    Collections.shuffle(list);
    int n = 0;
    for (Map.Entry<String, Integer> entry : list) {
      Log.d("Key: " + entry.getKey(), "Value: " + entry.getValue());
      RadioButton button = new RadioButton(this);
      button.setId(entry.getValue());
      button.setText(entry.getKey());
      rgOptions.addView(button);
      n++;
    }

    findViewById(R.id.buttonQuit)
        .setOnClickListener(
            new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                finish();
                Intent i = new Intent(Quiz.this, Welcome.class);
                startActivity(i);
              }
            });
    /*  for (int k = 0; k < optionsArray.size(); k++) {
        RadioButton button = new RadioButton(this);
        button.setId(k);
        button.setText(optionsArray.get(k));
        rgOptions.addView(button);
    }*/
    /*Code below this is debugging purpose only you can see how questions and options and
     *all things are being retrieved*/
    /*  int i=0;
    // questionArrayList
     for(Question q : questionArrayList)
     {
         for(Object S:q.getHashMap().keySet() )
         {
             Log.d("Quiz Question: " + i, S.toString());
             if(q.getImageUrl()!=null)
                 Log.d("Quiz Questions" + i + "Image Url", q.getImageUrl());
             ArrayList<String> OptionsNScores= q.getOptionsList(S);
             for(int j=0;j<OptionsNScores.size();j++){
                 Log.d("Quiz options for Q:" + i, OptionsNScores.get(j).toString());
             }
         }
         i++;
     }//Debug code ends here*/
    nextBtn.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            if (index < questions.size() && (index + 1) != questions.size()) {
              if (rgOptions.getCheckedRadioButtonId() == -1) {
                Toast.makeText(Quiz.this, "Please select an option..", Toast.LENGTH_LONG).show();
              } else if (rgOptions.getCheckedRadioButtonId() != -1) {
                rgOptions.setOnCheckedChangeListener(
                    new RadioGroup.OnCheckedChangeListener() {
                      @Override
                      public void onCheckedChanged(RadioGroup group, int checkedId) {
                        if (checkedId == -1) {
                          // Toast.makeText(Quiz.this, "Please select an option..",
                          // Toast.LENGTH_LONG).show();
                        } else {
                          Log.d("Index: ", String.valueOf(index));
                          // if (checkedId != -1) {
                          // value =
                          // Integer.parseInt(questionArrayList.get(index).getScores()[checkedId]);
                          value = checkedId;
                          Log.d("Score value for id: " + checkedId, String.valueOf(value));
                        }
                        // checkedId = -1;
                        // }
                      }
                    });
                score = score + value;
                Log.d("Score: ", String.valueOf(score));
                rgOptions.clearCheck();
                rgOptions.removeAllViews();
                index++;
                qNo.setText(String.format("Q%s", String.valueOf(index + 1)));
                if (!imageUrls.get(index).equalsIgnoreCase("null"))
                  new GetImageAsyncTask().execute(imageUrls.get(index));
                else // if(imageUrls.get(index).equalsIgnoreCase("null"))
                quesImage.setImageBitmap(null);
                ques.setText(questions.get(index));
                /* ArrayList<String> optionsArray = questionArrayList.get(index).getOptionsList(questions.get(index));
                for (int k = 0; k < optionsArray.size(); k++) {
                    RadioButton button = new RadioButton(Quiz.this);
                    button.setId(k);
                    button.setText(optionsArray.get(k));
                    rgOptions.addView(button);
                }*/
                HashMap<String, Integer> keyVal = new HashMap<String, Integer>();
                ArrayList<String> optionsArray =
                    questionArrayList.get(index).getOptionsList(questions.get(index));
                for (int i = 0; i < optionsArray.size(); i++) {
                  keyVal.put(
                      optionsArray.get(i),
                      Integer.valueOf(questionArrayList.get(index).getScores()[i]));
                }
                List<Map.Entry<String, Integer>> list =
                    new ArrayList<Map.Entry<String, Integer>>(keyVal.entrySet());
                Collections.shuffle(list);
                int n = 0;
                for (Map.Entry<String, Integer> entry : list) {
                  Log.d("Key: " + entry.getKey(), "Value: " + entry.getValue());
                  RadioButton button = new RadioButton(Quiz.this);
                  button.setId(entry.getValue());
                  button.setText(entry.getKey());
                  rgOptions.addView(button);
                  n++;
                }
              }
            } else {
              Intent intent = new Intent(Quiz.this, Result.class);
              intent.putExtra("Score", score);
              startActivity(intent);
              finish();
            }
            // }
          }
        });
  }