Kotlin 中的 RxTextView 无法从 KFunction1 中提取字符串
RxTextView in Kotlin cannot extract String from KFunction1
在Java中,我使用RxTextView 并在Fragment 中调用.subscribe() 来调用并将String 作为参数传递给Presenter 中的方法。
一切正常。
Java:
compositeDisposable.add(
RxTextView.textChanges(searchEditText)
.map(CharSequence::toString)
.debounce(500, TimeUnit.MILLISECONDS)
.distinctUntilChanged()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation())
.subscribe(query -> {
presenter.setQueryFilter(query); // query parameter: String
})
);
我对 Kotlin 中的 RxTextView 感到困惑,因为在函数 .subscribe( ... ) 中,值参数是一个通用变量,而不是像 Java 中那样的字符串。
科特林:
compositeDisposable.add(
RxTextView.textChanges(activity.findViewById(R.id.searchEditText))
.map {CharSequence::toString}
.debounce(500, TimeUnit.MILLISECONDS)
.distinctUntilChanged()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation())
.subscribe { query ->
getPresenter().setQueryFilter(query.toString()) //query parameter: KFunction1<CharSequence,String>!
//query.toString gives a such result: fun kotlin.Any.toString(): kotlin.String
}
)
如何从 EditText 中获取正确的字符串值并将其与 .subscibre() 连接起来,就像 Java?
解决方案
我将 .map{CharSequence::toString} 替换为:.map{it.toString()}
改变
map {CharSequence::toString}
至
map (CharSequence::toString)
在Java中,我使用RxTextView 并在Fragment 中调用.subscribe() 来调用并将String 作为参数传递给Presenter 中的方法。 一切正常。
Java:
compositeDisposable.add(
RxTextView.textChanges(searchEditText)
.map(CharSequence::toString)
.debounce(500, TimeUnit.MILLISECONDS)
.distinctUntilChanged()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation())
.subscribe(query -> {
presenter.setQueryFilter(query); // query parameter: String
})
);
我对 Kotlin 中的 RxTextView 感到困惑,因为在函数 .subscribe( ... ) 中,值参数是一个通用变量,而不是像 Java 中那样的字符串。
科特林:
compositeDisposable.add(
RxTextView.textChanges(activity.findViewById(R.id.searchEditText))
.map {CharSequence::toString}
.debounce(500, TimeUnit.MILLISECONDS)
.distinctUntilChanged()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation())
.subscribe { query ->
getPresenter().setQueryFilter(query.toString()) //query parameter: KFunction1<CharSequence,String>!
//query.toString gives a such result: fun kotlin.Any.toString(): kotlin.String
}
)
如何从 EditText 中获取正确的字符串值并将其与 .subscibre() 连接起来,就像 Java?
解决方案
我将 .map{CharSequence::toString} 替换为:.map{it.toString()}
改变
map {CharSequence::toString}
至
map (CharSequence::toString)