当前位置: 首页 > 编程笔记 >

Android Kotlin和RxJava示例

吕永寿
2023-03-14
本文向大家介绍Android Kotlin和RxJava示例,包括了Android Kotlin和RxJava示例的使用技巧和注意事项,需要的朋友参考一下

示例

第一个示例在Kotlin中重新实现,并使用RxJava进行更清晰的交互。

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.support.v7.widget.RecyclerView
import rx.subjects.PublishSubject

public class SampleAdapter(private val items: Array<String>) : RecyclerView.Adapter<SampleAdapter.ViewHolder>() {

    // 从rx.subject更改为不同的主题以获得不同的行为
    // 例如,BehaviorSubject允许在订阅时接收上一个事件
    // 另一方面,PublishSubject仅在订阅后才发送事件,这对于点击是理想的
    public val itemClickStream: PublishSubject<View> = PublishSubject.create()
    
    override fun getItemCount(): Int {
        return items.size
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder? {
        val v = LayoutInflater.from(parent.getContext()).inflate(R.layout.text_row_item, parent, false);
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.bind(items[position])
    }

    public inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        private val textView: TextView by lazy { view.findViewById(R.id.textView) as TextView }

        init {
           view.setOnClickListener{ v -> itemClickStream.onNext(v) }
        }

        fun bind(text: String) {
           textView.text= text
        }
    }
}

用法很简单。使用RxJava工具可以在单独的线程上进行订阅。

val adapter = SampleAdapter(arrayOf("Hello", "World"))
adapter.itemClickStream.subscribe { v ->
    if (v.id == R.id.textView) {
        // 做点什么
    }
}
           

 类似资料:
  • 你可以在这里找到JVM平台几种语言的例子 language adaptor: RxGroovy 示例 RxClojure 示例 RxScala 示例 下面的示例从一个字符串列表创建一个Observable,然后使用一个方法订阅这个Observable。 Java public static void hello(String... names) { Observable.from(name

  • 我对使用rxjava进行反应性编程是新手,在经历了更简单的示例之后,我现在试图弄清楚如何使用连续流。下面这个例子的问题是,在我接受了3个元素后,程序不会终止。我的假设是,我不知何故需要取消订阅我的可观察的,但我不完全掌握如何终止while循环并使程序退出。 我遇到了下面的RxJava帖子--终止无限流,但我仍然不知道我遗漏了什么。

  • 我已经退出Java游戏大约8年了,从那以后发生了很多变化。对我来说最大的挑战是RxJava/反应式。我正在寻找关于如何以完全反应式的方式执行以下等效操作的粗略指导。 下面使用ThreadPoolExecutor实现的基本需求是通过调用远程web服务来处理大量的内容,该服务的记录速率限制为每分钟100个请求。我的目标是尽可能快地处理,不丢弃任何东西,但仍然遵守下游利率限制。该代码已被简化,以避免错误

  • RxJava是 ReactiveX 在JVM上的一个实现,ReactiveX使用Observable序列组合异步和基于事件的程序。更多关于ReactiveX的资料,可以查看 ReactiveX 介绍 页面。 RxJava介绍 RxJava 是轻量级的 RxJava尽力做到非常轻巧。它仅关注Observable的抽象和与之相关的高层函数,实现为一个单独的JAR文件。 RxJava 是一个多语言实现

  • 为什么我们需要将RxAndroid与RxJava一起使用?它们与实际使用RxAndroid和RxJava之间的功能差异是什么?我找不到合适的答案。