Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ViewChangeTextSubscribe(val view: TextView) : ObservableOnSubscribe<String> {
- override fun subscribe(emitter: ObservableEmitter<String>) {
- if (Looper.getMainLooper() != Looper.myLooper()) {
- throw IllegalStateException(
- "Must be called on the main thread. Current thread: ${Thread.currentThread()}"
- )
- }
- val watcher = object : TextWatcher {
- override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) = Unit
- override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
- if (emitter.isDisposed.not()) emitter.onNext(s.toString())
- }
- override fun afterTextChanged(s: Editable) = Unit
- }
- view.addTextChangedListener(watcher)
- if (emitter.isDisposed) view.removeTextChangedListener(watcher)
- emitter.onNext(view.text.toString())
- }
- }
- Экстеншен ф-ция:
- inline fun TextInputEditText.textChanges(): Observable<String> = Observable.create(ViewChangeTextSubscribe(this))
- Пример использования:
- observFirstName = tietFirstName.textChanges()
- observLastName = tietLastName.textChanges()
- observPatronymic = tietPatronymic.textChanges()
- observBirthday = tietBirthday.textChanges()
- observPhone = tietPhone.textChanges()
- presenter.fieldValidation(
- observFirstName,
- observLastName,
- observPatronymic,
- observBirthday,
- observPhone
- )
- И пРезентер:
- override fun fieldValidation(
- observFirstName: Observable<String>,
- observLastName: Observable<String>,
- observPatronymic: Observable<String>,
- observBirthday: Observable<String>,
- observPhone: Observable<String>
- ) {
- disposables += Observable.combineLatest(
- observFirstName.map { it },
- observLastName.map { it },
- observPatronymic.map { it },
- observBirthday.map { it },
- observPhone.map { it },
- Function5 { firstName: String,
- lastName: String,
- patronymic: String,
- birthday: String,
- phone: String ->
- firstName.isNotBlank() &&
- lastName.isNotBlank() &&
- patronymic.isNotBlank() &&
- birthday.isNotBlank() &&
- phone.isNotBlank()
- }
- )
- .observeOn(rxSchedulers.ui)
- .subscribe { view.enabledRegistryButton(it) }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement