In Java I use RxTextView and call .subscribe() in Fragment to invoke and transmit String as a parameter to a method in Presenter. Everything works fine.
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
})
);
I get confused with RxTextView in Kotlin because in function .subscribe( ... ) value parameter is a generic variance instead of a String only as in Java is.
Kotlin:
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
}
)
How could I get a proper string value from EditText and connect this with .subscibre() like in Java?
SOLUTION
I replaced .map{CharSequence::toString} with: .map{it.toString()}
Change
map {CharSequence::toString}
to
map (CharSequence::toString)