Задача.
Имеется n-полей для ввода текста, а также кнопка, которая отправляет данные с этих полей ввода. Нужно, чтобы все поля были заполнены. Если хоть одно не будет заполнено, то это не даст отправить данные (блокирует кнопку). Кнопка изначально будет заблокирована, так как ни в одном из полей нет текста.
Решение.
Одним из распространенных способов решения является добавление
TextWatcher и дальнейшая обработка там блокировки кнопки. Решение имеет не мало кода и выглядит это не красиво. В качестве альтернативы могу предложить решение через
RxJava и RxBinding. Нужно использовать функции Observable.combineLatest() и RxTextView.textChanges(). Примерный код функции тут. Как-то Telegram не умеет красиво верстать исходный код.Получилось 5 строк кода, благодаря которым мы без труда решили задачу.
Интересны ли вам видеть на канале подобные #советы?