如果任何EditText字段包含文本,则启用按钮,但如果全部为空,则禁用

时间:2019-06-14 12:29:13

标签: android rx-java2

我有4个EditText输入字段和一个按钮。如果这些字段中有任何文本,我希望启用按钮,但如果所有字段中都没有输入文本,则希望禁用该按钮。我想出的最接近的解决方案是使用CombineLatest,但这仅在所有字段中都包含文本的情况下有效:

fun observeTextInputs(inputs: MutableList<Observable<String>>) {
        for (i in inputs) {
            mIputFieldsObservables.add(i)
        }

        disposables.add(
            Observable.combineLatest(mIputFieldsObservables) { args ->
                args.map { it ->
                    it.toString()
                }
            }.subscribe { array ->
                for (item in array) {
                    Log.d("LinkedIn Text Input", item)
                }
            }
        )
    }

我认为仍然可以通过一些修改来使用它。如果没有,我还有什么其他解决方案?

2 个答案:

答案 0 :(得分:0)

您可以为TextChangeListener创建edittexts,并在按钮为空时禁用该按钮:

  youredittext.addTextChangedListener(new TextWatcher()
{
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count)
    {
    //put your code here.ex: if s.length==0 do something

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int aft )                                                                          
    {

    }

    @Override
    public void afterTextChanged(Editable s)
    {


    }
});

答案 1 :(得分:0)

您可以检查以下库:Jake Wharton的https://github.com/JakeWharton/RxBinding,以便通过RxJava 2处理视图。

EditText example with RxBinding (variable it is EditText here)