检查某些条件后,我需要启用我的按钮,我想使用 @InverseBinding或双向数据绑定调用一种方法,并用返回值反映更改。
我的代码:
<Button
android:id="@+id/save_btn_disabled_3"
android:enabled="@={controller}"
....
/>
我的双向数据绑定逻辑在这里:
@InverseBindingAdapter(attribute = "enable")
fun getEnableButton(view:View, controller:Controller): Boolean {
//some conditions
return false
}
我想知道我朝正确的方向前进吗,代码正常吗? 请建议我。
答案 0 :(得分:1)
首先添加按钮状态对象
<variable
name="button"
type="com.brl.test.app.vm.ButtonStatus" />
<Button
android:id="@+id/save_btn_disabled_3"
bind:state_change="@{button.state}"
....
/>
在 buttonEnabled 功能中设置您的逻辑,然后启用您的按钮
@BindingAdapter({"bind:state_change"})
public static void buttonEnabled(TextView view, State state) {
view.setEnabled(true);
}
答案 1 :(得分:0)
您可以在字段中设置一个变量,例如:
<variable
name="wantsToVisibleProgress"
type="boolean" />
并按如下所示将其设置在您的按钮中:
<Button
android:id="@+id/constraint_select_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_button_blue_big"
android:enabled="@={wantsToVisibleProgress}"
android:gravity="center"
android:onClick="@{v -> fragment.onClick()}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txt_evse_one">
您可以这样设置该值:
binding.setWantsToVisibleProgress(true);