From 2d291bf9f07f169d3d710f258e97450f1319391b Mon Sep 17 00:00:00 2001 From: Floens Date: Sat, 20 Jan 2018 17:46:39 +0100 Subject: [PATCH] board setup: fix checkbox of add dialog no listener was set to the checkbox itself. --- .../floens/chan/ui/layout/BoardAddLayout.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/ui/layout/BoardAddLayout.java b/Clover/app/src/main/java/org/floens/chan/ui/layout/BoardAddLayout.java index d2ac8385..1e455344 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/layout/BoardAddLayout.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/layout/BoardAddLayout.java @@ -27,6 +27,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.CheckBox; +import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.TextView; @@ -160,34 +161,52 @@ public class BoardAddLayout extends LinearLayout implements SearchLayout.SearchL } } - private class SuggestionCell extends RecyclerView.ViewHolder implements OnClickListener { + private class SuggestionCell extends RecyclerView.ViewHolder implements OnClickListener, CompoundButton.OnCheckedChangeListener { private TextView text; private TextView description; private CheckBox check; private BoardSetupPresenter.BoardSuggestion suggestion; + private boolean ignoreCheckChange = false; + public SuggestionCell(View itemView) { super(itemView); text = itemView.findViewById(R.id.text); description = itemView.findViewById(R.id.description); check = itemView.findViewById(R.id.check); + check.setOnCheckedChangeListener(this); itemView.setOnClickListener(this); } public void setSuggestion(BoardSetupPresenter.BoardSuggestion suggestion) { this.suggestion = suggestion; + ignoreCheckChange = true; check.setChecked(suggestion.isChecked()); + ignoreCheckChange = false; } @Override public void onClick(View v) { if (v == itemView) { - onSuggestionClicked(suggestion); - check.setChecked(suggestion.isChecked()); + toggle(); + } + } + + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (!ignoreCheckChange && buttonView == check) { + toggle(); } } + + private void toggle() { + onSuggestionClicked(suggestion); + ignoreCheckChange = true; + check.setChecked(suggestion.isChecked()); + ignoreCheckChange = false; + } } }