java - Kotlin 中的 RxTextView 无法从 KFunction1 中提取字符串

标签 java android kotlin rx-binding

在 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 中那样仅是一个字符串。

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
                    }
    )

我如何从 EditText 获取正确的字符串值并将其与 .subscibre() 连接起来,就像在 Java 中一样?

解决方案

我将 .map{CharSequence::toString} 替换为: .map{it.toString()}

最佳答案

改变

map {CharSequence::toString}

map (CharSequence::toString)

关于java - Kotlin 中的 RxTextView 无法从 KFunction1 中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51138864/

相关文章:

java - Android 数字选择器卡住了

Android zipalign 错误 - 验证失败

android - 未生成 Dagger 2 组件

java - 未在 JMS listner 非 Activity 类 android 中获取应用程序上下文

android - App Links 的多子域支持

kotlin - 我无法部署到人工的Google Cloud

android - WebView 无法加载某些网页

JavaFX 使用 lambda 表达式删除 InvalidatorListener

java - 向 Weka 添加新过滤器时出错

java - java.math库中Math.cbrt(a)方法的时间复杂度