Skip to content

Commit 5ad51a4

Browse files
pshnicolas-raoul
authored andcommitted
Removed butterknife from quiz activity (#5383)
1 parent 27d69f1 commit 5ad51a4

File tree

3 files changed

+56
-65
lines changed

3 files changed

+56
-65
lines changed

app/src/main/java/fr/free/nrw/commons/quiz/QuizActivity.java

+52-61
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,23 @@
22

33
import android.content.Intent;
44
import android.os.Bundle;
5-
import android.widget.Button;
6-
import android.widget.TextView;
75

86
import androidx.appcompat.app.AlertDialog;
97
import androidx.appcompat.app.AppCompatActivity;
10-
import androidx.appcompat.widget.Toolbar;
118
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
129

1310
import com.facebook.drawee.drawable.ProgressBarDrawable;
1411
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
15-
import com.facebook.drawee.view.SimpleDraweeView;
1612

13+
import fr.free.nrw.commons.databinding.ActivityQuizBinding;
1714
import java.util.ArrayList;
1815

19-
import butterknife.BindView;
20-
import butterknife.ButterKnife;
21-
import butterknife.OnClick;
2216
import fr.free.nrw.commons.R;
2317

2418
public class QuizActivity extends AppCompatActivity {
2519

26-
@BindView(R.id.question_image) SimpleDraweeView imageView;
27-
@BindView(R.id.question_text) TextView questionText;
28-
@BindView(R.id.question_title) TextView questionTitle;
29-
@BindView(R.id.quiz_positive_answer) Button positiveAnswer;
30-
@BindView(R.id.quiz_negative_answer) Button negativeAnswer;
31-
@BindView(R.id.toolbar) Toolbar toolbar;
32-
33-
private QuizController quizController = new QuizController();
20+
private ActivityQuizBinding binding;
21+
private final QuizController quizController = new QuizController();
3422
private ArrayList<QuizQuestion> quiz = new ArrayList<>();
3523
private int questionIndex = 0;
3624
private int score;
@@ -44,15 +32,14 @@ public class QuizActivity extends AppCompatActivity {
4432
private boolean isNegativeAnswerChecked;
4533

4634
@Override
47-
protected void onCreate(Bundle savedInstanceState) {
35+
protected void onCreate(final Bundle savedInstanceState) {
4836
super.onCreate(savedInstanceState);
49-
setContentView(R.layout.activity_quiz);
37+
binding = ActivityQuizBinding.inflate(getLayoutInflater());
38+
setContentView(binding.getRoot());
5039

5140
quizController.initialize(this);
52-
ButterKnife.bind(this);
53-
setSupportActionBar(toolbar);
54-
positiveAnswer = findViewById(R.id.quiz_positive_answer);
55-
negativeAnswer = findViewById(R.id.quiz_negative_answer);
41+
setSupportActionBar(binding.toolbar.toolbar);
42+
binding.nextButton.setOnClickListener(view -> notKnowAnswer());
5643
displayQuestion();
5744
}
5845

@@ -65,7 +52,6 @@ public void setNextQuestion(){
6552
}
6653
}
6754

68-
@OnClick(R.id.next_button)
6955
public void notKnowAnswer(){
7056
customAlert("Information", quiz.get(questionIndex).getAnswerMessage());
7157
}
@@ -75,42 +61,45 @@ public void notKnowAnswer(){
7561
*/
7662
@Override
7763
public void onBackPressed() {
78-
AlertDialog.Builder alert = new AlertDialog.Builder(this);
79-
alert.setTitle(getResources().getString(R.string.warning));
80-
alert.setMessage(getResources().getString(R.string.quiz_back_button));
81-
alert.setPositiveButton(R.string.continue_message, (dialog, which) -> {
82-
Intent i = new Intent(QuizActivity.this, QuizResultActivity.class);
83-
dialog.dismiss();
84-
i.putExtra("QuizResult",score);
85-
startActivity(i);
86-
});
87-
alert.setNegativeButton("Cancel", (dialogInterface, i) -> dialogInterface.dismiss());
88-
AlertDialog dialog = alert.create();
89-
dialog.show();
64+
new AlertDialog.Builder(this)
65+
.setTitle(getResources().getString(R.string.warning))
66+
.setMessage(getResources().getString(R.string.quiz_back_button))
67+
.setPositiveButton(R.string.continue_message, (dialog, which) -> {
68+
final Intent intent = new Intent(this, QuizResultActivity.class);
69+
dialog.dismiss();
70+
intent.putExtra("QuizResult", score);
71+
startActivity(intent);
72+
})
73+
.setNegativeButton("Cancel", (dialogInterface, i) -> dialogInterface.dismiss())
74+
.create()
75+
.show();
9076
}
9177

9278
/**
9379
* to display the question
9480
*/
9581
public void displayQuestion() {
9682
quiz = quizController.getQuiz();
97-
questionText.setText(quiz.get(questionIndex).getQuestion());
98-
questionTitle.setText(getResources().getString(R.string.question)+quiz.get(questionIndex).getQuestionNumber());
99-
imageView.setHierarchy(GenericDraweeHierarchyBuilder
83+
binding.question.questionText.setText(quiz.get(questionIndex).getQuestion());
84+
binding.questionTitle.setText(
85+
getResources().getString(R.string.question) +
86+
quiz.get(questionIndex).getQuestionNumber()
87+
);
88+
binding.question.questionImage.setHierarchy(GenericDraweeHierarchyBuilder
10089
.newInstance(getResources())
10190
.setFailureImage(VectorDrawableCompat.create(getResources(),
10291
R.drawable.ic_error_outline_black_24dp, getTheme()))
10392
.setProgressBarImage(new ProgressBarDrawable())
10493
.build());
10594

106-
imageView.setImageURI(quiz.get(questionIndex).getUrl());
95+
binding.question.questionImage.setImageURI(quiz.get(questionIndex).getUrl());
10796
isPositiveAnswerChecked = false;
10897
isNegativeAnswerChecked = false;
109-
positiveAnswer.setOnClickListener(view -> {
98+
binding.answer.quizPositiveAnswer.setOnClickListener(view -> {
11099
isPositiveAnswerChecked = true;
111100
setNextQuestion();
112101
});
113-
negativeAnswer.setOnClickListener(view -> {
102+
binding.answer.quizNegativeAnswer.setOnClickListener(view -> {
114103
isNegativeAnswerChecked = true;
115104
setNextQuestion();
116105
});
@@ -122,34 +111,36 @@ R.drawable.ic_error_outline_black_24dp, getTheme()))
122111
public void evaluateScore() {
123112
if ((quiz.get(questionIndex).isAnswer() && isPositiveAnswerChecked) ||
124113
(!quiz.get(questionIndex).isAnswer() && isNegativeAnswerChecked) ){
125-
customAlert(getResources().getString(R.string.correct),quiz.get(questionIndex).getAnswerMessage() );
114+
customAlert(getResources().getString(R.string.correct),
115+
quiz.get(questionIndex).getAnswerMessage());
126116
score++;
127117
} else {
128-
customAlert(getResources().getString(R.string.wrong), quiz.get(questionIndex).getAnswerMessage());
118+
customAlert(getResources().getString(R.string.wrong),
119+
quiz.get(questionIndex).getAnswerMessage());
129120
}
130121
}
131122

132123
/**
133124
* to display explanation after each answer, update questionIndex and move to next question
134-
* @param title
135-
* @param Message
125+
* @param title the alert title
126+
* @param Message the alert message
136127
*/
137-
public void customAlert(String title, String Message) {
138-
AlertDialog.Builder alert = new AlertDialog.Builder(this);
139-
alert.setTitle(title);
140-
alert.setMessage(Message);
141-
alert.setPositiveButton(R.string.continue_message, (dialog, which) -> {
142-
questionIndex++;
143-
if (questionIndex == quiz.size()) {
144-
Intent i = new Intent(QuizActivity.this, QuizResultActivity.class);
145-
dialog.dismiss();
146-
i.putExtra("QuizResult",score);
147-
startActivity(i);
148-
} else {
149-
displayQuestion();
150-
}
151-
});
152-
AlertDialog dialog = alert.create();
153-
dialog.show();
128+
public void customAlert(final String title, final String Message) {
129+
new AlertDialog.Builder(this)
130+
.setTitle(title)
131+
.setMessage(Message)
132+
.setPositiveButton(R.string.continue_message, (dialog, which) -> {
133+
questionIndex++;
134+
if (questionIndex == quiz.size()) {
135+
final Intent intent = new Intent(this, QuizResultActivity.class);
136+
dialog.dismiss();
137+
intent.putExtra("QuizResult", score);
138+
startActivity(intent);
139+
} else {
140+
displayQuestion();
141+
}
142+
})
143+
.create()
144+
.show();
154145
}
155146
}

app/src/main/res/layout/activity_quiz.xml

+4-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
android:layout_height="match_parent"
1212
android:orientation="vertical">
1313

14-
<include layout="@layout/toolbar"/>
14+
<include
15+
android:id="@+id/toolbar"
16+
layout="@layout/toolbar" />
1517

16-
<androidx.cardview.widget.CardView
18+
<androidx.cardview.widget.CardView
1719
android:layout_width="match_parent"
1820
android:layout_height="match_parent"
1921
app:cardCornerRadius="@dimen/activity_margin_horizontal"

app/src/test/kotlin/fr/free/nrw/commons/quiz/QuizActivityUnitTest.kt

-2
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ class QuizActivityUnitTest {
5353
quizController.initialize(context)
5454
positiveAnswer = view.findViewById(R.id.quiz_positive_answer)
5555
negativeAnswer = view.findViewById(R.id.quiz_negative_answer)
56-
activity.positiveAnswer = positiveAnswer
57-
activity.negativeAnswer = negativeAnswer
5856
}
5957

6058
@Test

0 commit comments

Comments
 (0)