Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.70 KB | None | 0 0
  1. class ViewChangeTextSubscribe(val view: TextView) : ObservableOnSubscribe<String> {
  2.  
  3.     override fun subscribe(emitter: ObservableEmitter<String>) {
  4.  
  5.         if (Looper.getMainLooper() != Looper.myLooper()) {
  6.             throw IllegalStateException(
  7.                 "Must be called on the main thread. Current thread: ${Thread.currentThread()}"
  8.             )
  9.         }
  10.  
  11.         val watcher = object : TextWatcher {
  12.             override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) = Unit
  13.  
  14.             override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
  15.                 if (emitter.isDisposed.not()) emitter.onNext(s.toString())
  16.             }
  17.  
  18.             override fun afterTextChanged(s: Editable) = Unit
  19.         }
  20.  
  21.         view.addTextChangedListener(watcher)
  22.         if (emitter.isDisposed) view.removeTextChangedListener(watcher)
  23.         emitter.onNext(view.text.toString())
  24.     }
  25. }
  26.  
  27.  
  28. Экстеншен ф-ция:
  29. inline fun TextInputEditText.textChanges(): Observable<String> = Observable.create(ViewChangeTextSubscribe(this))
  30.  
  31. Пример использования:
  32.  
  33.         observFirstName = tietFirstName.textChanges()
  34.         observLastName = tietLastName.textChanges()
  35.         observPatronymic = tietPatronymic.textChanges()
  36.         observBirthday = tietBirthday.textChanges()
  37.         observPhone = tietPhone.textChanges()
  38.  
  39.         presenter.fieldValidation(
  40.             observFirstName,
  41.             observLastName,
  42.             observPatronymic,
  43.             observBirthday,
  44.             observPhone
  45.         )
  46.  
  47.  
  48.  
  49. И пРезентер:
  50.  
  51.  
  52.  
  53.  
  54.   override fun fieldValidation(
  55.         observFirstName: Observable<String>,
  56.         observLastName: Observable<String>,
  57.         observPatronymic: Observable<String>,
  58.         observBirthday: Observable<String>,
  59.         observPhone: Observable<String>
  60.     ) {
  61.         disposables += Observable.combineLatest(
  62.             observFirstName.map { it },
  63.             observLastName.map { it },
  64.             observPatronymic.map { it },
  65.             observBirthday.map { it },
  66.             observPhone.map { it },
  67.             Function5 { firstName: String,
  68.                         lastName: String,
  69.                         patronymic: String,
  70.                         birthday: String,
  71.                         phone: String ->
  72.                 firstName.isNotBlank() &&
  73.                         lastName.isNotBlank() &&
  74.                         patronymic.isNotBlank() &&
  75.                         birthday.isNotBlank() &&
  76.                         phone.isNotBlank()
  77.             }
  78.         )
  79.             .observeOn(rxSchedulers.ui)
  80.             .subscribe { view.enabledRegistryButton(it) }
  81.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement