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