diff options
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java')
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java | 64 |
1 files changed, 46 insertions, 18 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java index 08b3ad7e..015f206f 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java @@ -25,35 +25,37 @@ package net.lacolaco.smileessence.viewmodel; import android.app.Activity; +import android.databinding.*; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; +import net.lacolaco.smileessence.BR; import net.lacolaco.smileessence.R; +import net.lacolaco.smileessence.databinding.MenuItemCheckboxBinding; public class CheckBoxModel implements IViewModel { // ------------------------------ FIELDS ------------------------------ - private final String text; - private boolean checked; + private final CheckedState state; // --------------------------- CONSTRUCTORS --------------------------- - public CheckBoxModel(String text, boolean isChecked) { - this.text = text; - checked = isChecked; + public CheckBoxModel(String _text, boolean _checked) { + state = new CheckedState(_text, _checked); } // --------------------- GETTER / SETTER METHODS --------------------- public boolean isChecked() { - return checked; + return state.isChecked(); } - public void setChecked(boolean checked) { - this.checked = checked; + public void setChecked(boolean _checked) { + state.setChecked(_checked); } // ------------------------ INTERFACE METHODS ------------------------ @@ -64,17 +66,43 @@ public class CheckBoxModel implements IViewModel { @Override public View getView(Activity activity, LayoutInflater inflater, View convertedView) { if (convertedView == null) { - convertedView = inflater.inflate(R.layout.menu_item_checkbox, null); + MenuItemCheckboxBinding binding = MenuItemCheckboxBinding.inflate(inflater, null, false); + convertedView = binding.getRoot(); + convertedView.setTag(binding); } - CheckBox checkBox = (CheckBox) convertedView.findViewById(R.id.checkBox_menuItem); - checkBox.setText(this.text); - checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - CheckBoxModel.this.checked = isChecked; - } - }); - checkBox.setChecked(checked); + + MenuItemCheckboxBinding binding = (MenuItemCheckboxBinding) convertedView.getTag(); + binding.setCheckedState(state); return convertedView; } + + public static class CheckedState extends BaseObservable { + private String text; + private boolean checked; + + CheckedState(String _text, boolean _checked) { + text = _text; + checked = _checked; + } + + @Bindable + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + notifyPropertyChanged(BR.text); + } + + @Bindable + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + notifyPropertyChanged(BR.checked); + } + } } |