私はプロジェクトでRxBindingsと共にRxJava2、Kotlin-1.1を使用しています。Observable.combineLatest型推論in kotlin
「ログイン」ボタンがデフォルトで無効になっている簡単なログイン画面がありますが、ユーザー名とパスワードのedittextフィールドが空でない場合にのみボタンを有効にします。
LoginActivity.javaが
Observable<Boolean> isFormEnabled =
Observable.combineLatest(mUserNameObservable, mPasswordObservable,
(userName, password) -> userName.length() > 0 && password.length() > 0)
.distinctUntilChanged();
私はKotlinへJavaから上記のコードを変換することができないよ:
LoginActivity.kt
class LoginActivity : AppCompatActivity() {
val disposable = CompositeDisposable()
private var userNameObservable: Observable<CharSequence>? = null
private var passwordObservable: Observable<CharSequence>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
initialize()
}
fun initialize() {
userNameObservable = RxTextView.textChanges(username).skip(1)
.debounce(500, TimeUnit.MILLISECONDS)
passwordObservable = RxTextView.textChanges(password).skip(1)
.debounce(500, TimeUnit.MILLISECONDS)
}
private fun setSignInButtonEnableListener() {
val isSignInEnabled: Observable<Boolean> = Observable.combineLatest(userNameObservable,
passwordObservable,
{ u: CharSequence, p: CharSequence -> u.isNotEmpty() && p.isNotEmpty() })
}
}
私はそれが何かを想定第3引数の型推論に関連するものはcombinelatest
、bu
の
Observables
を使用するには、私はこれを長い間姿を取り出しました。 – Vicky