在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(...)中,value参数是一个通用变量,而不是像Java中的String。
科特林:
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获得合适的字符串值,并将其与Java中的.subscibre()连接起来?
解
我将.map {CharSequence :: toString}替换为:.map { it.toString() }
更改
map {CharSequence::toString}
至
map (CharSequence::toString)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句