Хочу поделиться с вами удобным решением типичной задачи в Android-разработке.



Задача.

Имеется n-полей для ввода текста, а также кнопка, которая отправляет данные с этих полей ввода. Нужно, чтобы все поля были заполнены. Если хоть одно не будет заполнено, то это не даст отправить данные (блокирует кнопку). Кнопка изначально будет заблокирована, так как ни в одном из полей нет текста.



Решение.

Одним из распространенных способов решения является добавление TextWatcher и дальнейшая обработка там блокировки кнопки. Решение имеет не мало кода и выглядит это не красиво.



В качестве альтернативы могу предложить решение через RxJava и RxBinding. Нужно использовать функции Observable.combineLatest() и RxTextView.textChanges(). Примерный код функции тут. Как-то Telegram не умеет красиво верстать исходный код.



Получилось 5 строк кода, благодаря которым мы без труда решили задачу.



Интересны ли вам видеть на канале подобные #советы?