美文网首页
寻求用databinding实现EditTextChangeLi

寻求用databinding实现EditTextChangeLi

作者: 朱_c713 | 来源:发表于2020-08-31 09:06 被阅读0次

    用databinding取代EditTextChangeListener 实现监听效果。


    image.png

    需求:只有当必填项全都填上的时候,蓝色button才会显示为可点击状态。

    旧的解决方案

    代码大致如下:

       private void initRoomNameEditListener() {
            binding.edtRoomTypeName.addTextChangedListener(new AddRoomTypeActivity.EditTextChangeListener(binding.edtRoomTypeName));
            binding.edtRoomSize.addTextChangedListener(new AddRoomTypeActivity.EditTextChangeListener(binding.edtRoomSize));
    
        }
    
        public class EditTextChangeListener implements TextWatcher {
    
            private EditText edtText;
    
            public EditTextChangeListener(EditText editText) {
                this.edtText = editText;
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
            }
    
            @Override
            public void afterTextChanged(Editable content) {
                
            }
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if (TextUtils.isEmpty(binding.edtRoomTypeName.getText()) || TextUtils.isEmpty(binding.edtRoomSize.getText())) {
                    mViewModel.isCanClick.set(false);
    
                } else {
                    mViewModel.isCanClick.set(true);
    
                }
    
            }
    
        }
    

    在mViewModel 中设置变量,enbable用zhe'g

    新解决方案:

    因为Databinding自带可以观察的字段,我们巧妙利用:

    为每一项添加这样的字段:

        public ObservableField<String> chamberName = new ObservableField<>(); 
        public ObservableField<String> rent = new ObservableField<>();
    

    并在viewmodel中同时增加如下方法,这样利用原生的Observable,我们就自然实现了监听。不用采用

       public boolean getIsCanCreate(){
            return (!TextUtils.isEmpty(rent.get()))&&(!TextUtils.isEmpty(chamberName.get()));
        }
    

    以上代码应该不正确,但是感觉似乎也是一种思路。不知道到有实现的没有:

    相关文章

      网友评论

          本文标题:寻求用databinding实现EditTextChangeLi

          本文链接:https://www.haomeiwen.com/subject/rqtusktx.html