Removed butterknife from quiz activity (#5383)

This commit is contained in:
Paul Hawke 2023-11-20 02:48:22 -06:00 committed by GitHub
parent d967279abc
commit 3118a8368b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 65 deletions

View file

@ -2,35 +2,23 @@ package fr.free.nrw.commons.quiz;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
import com.facebook.drawee.drawable.ProgressBarDrawable; import com.facebook.drawee.drawable.ProgressBarDrawable;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.view.SimpleDraweeView;
import fr.free.nrw.commons.databinding.ActivityQuizBinding;
import java.util.ArrayList; import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
public class QuizActivity extends AppCompatActivity { public class QuizActivity extends AppCompatActivity {
@BindView(R.id.question_image) SimpleDraweeView imageView; private ActivityQuizBinding binding;
@BindView(R.id.question_text) TextView questionText; private final QuizController quizController = new QuizController();
@BindView(R.id.question_title) TextView questionTitle;
@BindView(R.id.quiz_positive_answer) Button positiveAnswer;
@BindView(R.id.quiz_negative_answer) Button negativeAnswer;
@BindView(R.id.toolbar) Toolbar toolbar;
private QuizController quizController = new QuizController();
private ArrayList<QuizQuestion> quiz = new ArrayList<>(); private ArrayList<QuizQuestion> quiz = new ArrayList<>();
private int questionIndex = 0; private int questionIndex = 0;
private int score; private int score;
@ -44,15 +32,14 @@ public class QuizActivity extends AppCompatActivity {
private boolean isNegativeAnswerChecked; private boolean isNegativeAnswerChecked;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz); binding = ActivityQuizBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
quizController.initialize(this); quizController.initialize(this);
ButterKnife.bind(this); setSupportActionBar(binding.toolbar.toolbar);
setSupportActionBar(toolbar); binding.nextButton.setOnClickListener(view -> notKnowAnswer());
positiveAnswer = findViewById(R.id.quiz_positive_answer);
negativeAnswer = findViewById(R.id.quiz_negative_answer);
displayQuestion(); displayQuestion();
} }
@ -65,7 +52,6 @@ public class QuizActivity extends AppCompatActivity {
} }
} }
@OnClick(R.id.next_button)
public void notKnowAnswer(){ public void notKnowAnswer(){
customAlert("Information", quiz.get(questionIndex).getAnswerMessage()); customAlert("Information", quiz.get(questionIndex).getAnswerMessage());
} }
@ -75,18 +61,18 @@ public class QuizActivity extends AppCompatActivity {
*/ */
@Override @Override
public void onBackPressed() { public void onBackPressed() {
AlertDialog.Builder alert = new AlertDialog.Builder(this); new AlertDialog.Builder(this)
alert.setTitle(getResources().getString(R.string.warning)); .setTitle(getResources().getString(R.string.warning))
alert.setMessage(getResources().getString(R.string.quiz_back_button)); .setMessage(getResources().getString(R.string.quiz_back_button))
alert.setPositiveButton(R.string.continue_message, (dialog, which) -> { .setPositiveButton(R.string.continue_message, (dialog, which) -> {
Intent i = new Intent(QuizActivity.this, QuizResultActivity.class); final Intent intent = new Intent(this, QuizResultActivity.class);
dialog.dismiss(); dialog.dismiss();
i.putExtra("QuizResult",score); intent.putExtra("QuizResult", score);
startActivity(i); startActivity(intent);
}); })
alert.setNegativeButton("Cancel", (dialogInterface, i) -> dialogInterface.dismiss()); .setNegativeButton("Cancel", (dialogInterface, i) -> dialogInterface.dismiss())
AlertDialog dialog = alert.create(); .create()
dialog.show(); .show();
} }
/** /**
@ -94,23 +80,26 @@ public class QuizActivity extends AppCompatActivity {
*/ */
public void displayQuestion() { public void displayQuestion() {
quiz = quizController.getQuiz(); quiz = quizController.getQuiz();
questionText.setText(quiz.get(questionIndex).getQuestion()); binding.question.questionText.setText(quiz.get(questionIndex).getQuestion());
questionTitle.setText(getResources().getString(R.string.question)+quiz.get(questionIndex).getQuestionNumber()); binding.questionTitle.setText(
imageView.setHierarchy(GenericDraweeHierarchyBuilder getResources().getString(R.string.question) +
quiz.get(questionIndex).getQuestionNumber()
);
binding.question.questionImage.setHierarchy(GenericDraweeHierarchyBuilder
.newInstance(getResources()) .newInstance(getResources())
.setFailureImage(VectorDrawableCompat.create(getResources(), .setFailureImage(VectorDrawableCompat.create(getResources(),
R.drawable.ic_error_outline_black_24dp, getTheme())) R.drawable.ic_error_outline_black_24dp, getTheme()))
.setProgressBarImage(new ProgressBarDrawable()) .setProgressBarImage(new ProgressBarDrawable())
.build()); .build());
imageView.setImageURI(quiz.get(questionIndex).getUrl()); binding.question.questionImage.setImageURI(quiz.get(questionIndex).getUrl());
isPositiveAnswerChecked = false; isPositiveAnswerChecked = false;
isNegativeAnswerChecked = false; isNegativeAnswerChecked = false;
positiveAnswer.setOnClickListener(view -> { binding.answer.quizPositiveAnswer.setOnClickListener(view -> {
isPositiveAnswerChecked = true; isPositiveAnswerChecked = true;
setNextQuestion(); setNextQuestion();
}); });
negativeAnswer.setOnClickListener(view -> { binding.answer.quizNegativeAnswer.setOnClickListener(view -> {
isNegativeAnswerChecked = true; isNegativeAnswerChecked = true;
setNextQuestion(); setNextQuestion();
}); });
@ -122,34 +111,36 @@ public class QuizActivity extends AppCompatActivity {
public void evaluateScore() { public void evaluateScore() {
if ((quiz.get(questionIndex).isAnswer() && isPositiveAnswerChecked) || if ((quiz.get(questionIndex).isAnswer() && isPositiveAnswerChecked) ||
(!quiz.get(questionIndex).isAnswer() && isNegativeAnswerChecked) ){ (!quiz.get(questionIndex).isAnswer() && isNegativeAnswerChecked) ){
customAlert(getResources().getString(R.string.correct),quiz.get(questionIndex).getAnswerMessage() ); customAlert(getResources().getString(R.string.correct),
quiz.get(questionIndex).getAnswerMessage());
score++; score++;
} else { } else {
customAlert(getResources().getString(R.string.wrong), quiz.get(questionIndex).getAnswerMessage()); customAlert(getResources().getString(R.string.wrong),
quiz.get(questionIndex).getAnswerMessage());
} }
} }
/** /**
* to display explanation after each answer, update questionIndex and move to next question * to display explanation after each answer, update questionIndex and move to next question
* @param title * @param title the alert title
* @param Message * @param Message the alert message
*/ */
public void customAlert(String title, String Message) { public void customAlert(final String title, final String Message) {
AlertDialog.Builder alert = new AlertDialog.Builder(this); new AlertDialog.Builder(this)
alert.setTitle(title); .setTitle(title)
alert.setMessage(Message); .setMessage(Message)
alert.setPositiveButton(R.string.continue_message, (dialog, which) -> { .setPositiveButton(R.string.continue_message, (dialog, which) -> {
questionIndex++; questionIndex++;
if (questionIndex == quiz.size()) { if (questionIndex == quiz.size()) {
Intent i = new Intent(QuizActivity.this, QuizResultActivity.class); final Intent intent = new Intent(this, QuizResultActivity.class);
dialog.dismiss(); dialog.dismiss();
i.putExtra("QuizResult",score); intent.putExtra("QuizResult", score);
startActivity(i); startActivity(intent);
} else { } else {
displayQuestion(); displayQuestion();
} }
}); })
AlertDialog dialog = alert.create(); .create()
dialog.show(); .show();
} }
} }

View file

@ -11,9 +11,11 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<include layout="@layout/toolbar"/> <include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:cardCornerRadius="@dimen/activity_margin_horizontal" app:cardCornerRadius="@dimen/activity_margin_horizontal"

View file

@ -53,8 +53,6 @@ class QuizActivityUnitTest {
quizController.initialize(context) quizController.initialize(context)
positiveAnswer = view.findViewById(R.id.quiz_positive_answer) positiveAnswer = view.findViewById(R.id.quiz_positive_answer)
negativeAnswer = view.findViewById(R.id.quiz_negative_answer) negativeAnswer = view.findViewById(R.id.quiz_negative_answer)
activity.positiveAnswer = positiveAnswer
activity.negativeAnswer = negativeAnswer
} }
@Test @Test