我有一些RadioButtons,我希望在模型更改时检查/取消选中它们,使用数据绑定。
我设法建立了一个EditText,它工作正常
无论如何,RadioButtons的行为与android:checked属性不同。
<RadioButton
android:id="@+id/radio_kitchen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/kitchen"
android:checked="@{radiator.room==@string/kitchen?true:false}"
/>
答案 0 :(得分:1)
这就是我目前正在为此做的事情:
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> car.setModel(@string/car_model_toyota)}"
android:checked="@{car.model.equals(@string/car_model_toyota)}"
android:text="@string/car_model_toyota"/>
它的作弊因为我给View提供了一些代码逻辑...但至少我不必在每个单片组上实现onchange监听器而且我仍然得到绑定发生...
除非有人纠正我并给我一个更道德和专业的解决方案,否则我认为我会坚持使用这个。
答案 1 :(得分:0)
这个答案可能太迟了,但是其他遇到此问题的人可以尝试一下:
XML:
<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/radio_pirates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Iron Man"
android:onClick="buttonClicked"/>
<RadioButton android:id="@+id/radio_ninjas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Batman"
android:onClick="buttonClicked"/>
</RadioGroup>
活动:
public void buttonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.iron_man:
if (checked)
// Iron man is the best!
break;
case R.id.batman:
if (checked)
// Batman rocks!
break;
}
}
这是我在Android开发人员page上找到的方法。
答案 2 :(得分:0)
您可以为每个单选按钮创建自定义ID,并使用radiogroup的android:checkedButton通过双向数据绑定保留单选按钮的选中状态。
对于单选按钮的值,您可以根据业务逻辑使用android:onClick属性具有特定的值
<RadioGroup
android:checkedButton="@={signUpModel.genderId}"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@id/headerGender"
android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<RadioButton
android:id="@+id/female"
android:onClick="@{() -> signUpModel.setGender(@string/cd_female)}"
android:background="@drawable/bg_gender_cta_selector"
android:button="@drawable/ic_gender_female"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/cd_female"/>
<RadioButton
android:id="@+id/male"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:onClick="@{() -> signUpModel.setGender(@string/cd_male)}"
android:button="@drawable/ic_gender_male"
android:background="@drawable/bg_gender_cta_selector"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/cd_male"/>
</RadioGroup>
ids.xml(内部值)
<resources>
<item name="female" type="id" format="string"/>
<item name="male" type="id" format="string"/>
</resources>