Tag: rx kotlin

RxKotlin使用方法引用collectInto()MutableList

以下代码是我尝试将RxJava示例转换为Kotlin。 它应该收集一串Int到MutableList ,但是我得到了大量的错误。 val all: Single<MutableList<Int>> = Observable .range(10, 20) .collectInto(::MutableList, MutableList::add) 错误: Error:(113, 36) Kotlin: Type inference failed: Not enough information to infer parameter T in inline fun <T> MutableList(size: Int, init: (index: Int) -> T): MutableList<T> Please specify it explicitly. Error:(113, 49) Kotlin: One type argument expected for interface MutableList<E> : List<E>, MutableCollection<E> […]

如何用RxAndroid压缩Kotlin语言中的几个观察值

大家! 我有一些问题。 我是RxJava / RxKotlin / RxAndroid的初学者,并不了解某些功能。 例如: import rus.pifpaf.client.data.catalog.models.Category import rus.pifpaf.client.data.main.MainRepository import rus.pifpaf.client.data.main.models.FrontDataModel import rus.pifpaf.client.data.product.models.Product import rx.Observable import rx.Single import rx.lang.kotlin.observable import java.util.* class MainInteractor { private var repository: MainRepository = MainRepository() fun getFrontData() { val cats = getCategories() val day = getDayProduct() val top = getTopProducts() return Observable.zip(cats, day, top, MainInteractor::convert) } private […]

rx kotlin订阅不工作,没有收到物品

我创建了一个函数,它返回一个带有文件名的Observable<String> ,但是我没有在我的订阅中得到任何我调用这个方法的事件。 也没有调用onError或onComplete 看我的代码: fun getAllFiles(): Observable<String> { val allFiles = File("/Users/stephan/Projects/Playground/kotlinfiles/") .listFiles { file -> !file.isDirectory() } return observable { subscriber -> allFiles.toObservable() .map { f -> "${f.name}" } .doOnNext { println("Found file $it") } .subscribe { subscriber} } } fun test() { getAllFiles() .doOnNext { println("File name$it") } .subscribe( {n -> println("File: $n")}, […]

RxKotlin flattenAsObservable():类型与方法引用不匹配

我正在将一些Java代码转换为Kotlin,并且在flattenAsObservable()遇到了一些麻烦。 以下是Java中的代码: discogsInteractor.search(query) .map(RootSearchResponse::getSearchResults) .flattenAsObservable(searchResults -> searchResults) .take(12) 这是我到目前为止在科特林所做的: discogsInteractor.search(query) .map { RootSearchResponse::searchResults } .flattenAsObservable<SearchResult> { searchResults -> searchResults } .take(12) 它强调了第二个searchResults并给了我以下错误: Required: (Mutable)Iterable<SearchResult!>! Found: KProperty1<RootSearchResponse, List<SearchResult>>! 我可以替换 .map { RootSearchResponse::searchResults } 同 .map { searchResponse -> searchResponse.searchResults } 它会工作。 我如何正确的方法参考? 或者在这种情况下我不能这样做的原因是什么? RootSearchResponse: data class RootSearchResponse(val pagination: Pagination, @SerializedName("results") val searchResults: List<SearchResult>)

与RxKotlinFX堆栈Kotlin给不能访问类错误

当我在我的POM文件中使用以下依赖项时: <properties> <rxkotlinfx.version>2.2.0</rxkotlinfx.version> <rxkotlin.version>2.1.0</rxkotlin.version> <kotlin.version>1.1.51</kotlin.version> <tornadofx.version>1.7.12</tornadofx.version> </properties> <dependencies> <dependency> <groupId>com.github.thomasnield</groupId> <artifactId>rxkotlinfx</artifactId> <version>${rxkotlinfx.version}</version> </dependency> <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxkotlin</artifactId> <version>${rxkotlin.version}</version> </dependency> <dependency> <groupId>no.tornado</groupId> <artifactId>tornadofx</artifactId> <version>${tornadofx.version}</version> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>${kotlin.version}</version> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-test</artifactId> <version>${kotlin.version}</version> <scope>test</scope> </dependency> </dependencies> 并运行以下代码: fun main(args: Array<String>) { val source = listOf("A", "B", "C").toObservable() .filter { it == "B" } .subscribeBy( onNext = […]

我可以创建一个将rxJava订阅添加到CompositeSubscription的Kotlin扩展方法吗?

我一直在玩Kotlin / RxJava,并试图创建一个扩展方法来将订阅添加到CompositeSubscription,这将工作如下: search.subscribe { //do stuff }.addToComposite(compositeSubscription) 这是我迄今的尝试: fun Subscription.addToComposite(composite: CompositeSubscription) = { composite.add(this) } 它编译和运行没有错误,但似乎并没有实际将订阅添加到CompositeSubscription。 我做错了什么?

对于用作表达式的Kotlin函数,有没有简洁的方法来操作并返回一个值?

在Kotlin中,函数的最后一个语句可以被解释为它的返回值。 像下面的例子可以被简化为不太冗长吗? { text: String -> val validated = validateText(text) if (validated) { actOnValidation() } validated } 下面是一个使用RxJava的例子 – 即使有更好的Rx方法,我也会对纯Kotlin解决方案感兴趣。 fun inputChainObservable(targetField: TextView, chainedField: TextView): Observable<Boolean> { return targetField.textChanges() .observeOn(AndroidSchedulers.mainThread()) .map { cs: CharSequence? -> val hasInput = validateText(cs.toString()) if (hasInput) { chainedField.requestFocus() } hasInput } }

RxJava(Kotlin),Observable.amb和PublishSubject没有开火

我们试图观察15s的时间间隔,或者在我们的主题refreshEventsSubject上触发refreshEventsSubject ,但是没有成功。 主题是这样启动的 private val refreshEventsSubject = PublishSubject<Long>() 然后我们尝试像这样观察它 Observable.merge(Observable.interval(0, 15, TimeUnit.SECONDS), refreshEventsSubject) .subscribe { … } 我们每隔15s就会收到一次这个事件,但是跑步之后这个话题还没有开始 refreshEventsSubject.onNext(0) 任何想法赞赏。 (一切都是用Kotlin写的)

创建Kotlin对象的新实例

我有一个对象QuickSort ,我试图创建2个实例。 当我尝试创建2个单独的实例时,我可以看到它只使用一个实例,因为我在QuickSort类中有一个不准确的计数。 Kotlin在语法上不使用新的,所以我怎么去解决这个问题呢? object QuickSort { var count = 0; quickSortOne(…){ … count++ … } quickSortTwo(…){ … count++ … } } 这里是我如何创建我的2个实例。我的目标是让quickSort1和quickSort2是2个独立的实例。 var quickSort1 = QuickSort quickSort1.quickSortOne(…) var quickSort2 = QuickSort quickSort2.quickSortTwo(…) 尝试解决方案 :将QuickSort从对象转换为类。 这仍然导致使用相同的实例,如包含第一次调用计数的第二种方法的计数所示。 class QuickSort { var count = 0; quickSortOne(…){ … count++ … } quickSortTwo(…){ … count++ … } } … […]

如何在kotlin编程语言中使用如下所述的循环?

我怎样才能让它在kotlin使用for循环? for (double i = 0; i < 10.0; i += 0.25) { System.out.println("value is:" + i); }