Closed brady2037 closed 1 year ago
场景如下: 登陆页面实现发送验证码倒计时按钮时,自定义View:
public class EditTextVerificationCode extends LinearLayout { public void sendCodeSuccess() { //开始倒计时逻辑 } }
使用了strict_databinding库,看到
(警惕使用。非必要情况下,尽可能不在子类中拿到 binding 实例乃至获取 view 实例。使用即埋下隐患)
在不获取view实例的原则下, Activity如何优雅的在调用发送验证码接口成功后调用sendSuccess(), 还是说这种场景下还是获取view实例比较合适
目前是通过@BindingAdapter方式,在Activity定义State,接口成功后setState(true)
@BindingAdapter(value = {"sendCodeStatus"}, requireAll = false) public static void sendCodeStatusChange(EditTextVerificationCode verificationCode, boolean isSend) { if (isSend) { verificationCode.sendSuccess(); } }
public static class LoginStates extends StateHolder { public final State<Boolean> sendCodeStatus = new State<>(false); }
<com.example.ble.ui.view.EditTextVerificationCode android:layout_width="0dp" android:layout_height="45dp" sendCodeStatus="@{vm.sendCodeStatus}">
目前来说,确实没有更优雅办法。 通过 State 类配合 boolean 或任意类型变量的推送,变相完成一次刷新通知。
场景如下: 登陆页面实现发送验证码倒计时按钮时,自定义View:
使用了strict_databinding库,看到
在不获取view实例的原则下, Activity如何优雅的在调用发送验证码接口成功后调用sendSuccess(), 还是说这种场景下还是获取view实例比较合适
目前是通过@BindingAdapter方式,在Activity定义State,接口成功后setState(true)