我有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)
}
}
)
}
我认为仍然可以通过一些修改来使用它。如果没有,我还有什么其他解决方案?
答案 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)