RxJava2 observable no procesando en Siguiente cuando hay un cambio

Soy principiante en RxJava. Quiero hacer un seguimiento de los cambios de la variable Int y reactjsr ante ella cuando cambie.

Aquí está mi ejemplo:

 class MainActivity : AppCompatActivity() { lateinit var button: Button var counter: Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val observable :Observable<Int> = Observable.just(counter) button = findViewById(R.id.button) button.setOnClickListener(View.OnClickListener { counter++ }) observable.subscribe( Consumer { t -> Log.d("fromObservable", counter.toString()) } ) } } } 

Sin embargo, el logging nunca invoca cuando hago clic en el button. ¿Cómo puedo hacerlo correctamente con RxJava2?

Usted creó un observable simple que solo emite un elemento, pero puede usar un Subject para su caso de uso:

 class MainActivity : AppCompatActivity() { lateinit var button: Button var counter: Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val subject: BehaviorSubject<Int> = BehaviorSubject.createDefault(counter) val observable: Observable<Int> = subject.hide() button = findViewById(R.id.button) button.setOnClickListener(View.OnClickListener { subject.onNext(++counter) }) observable.subscribe( Consumer { t -> Log.d("fromObservable", counter.toString()) } ) } } } 

No estás creando tu Observable correctamente.

Observable.just(counter) creará un Observable que emitirá el valor de counter y se completará. Documentación de Observable.just ()

Puedes hacer lo que quieras con un Subject como BehaviorSubject . Documentación del tema

 class MainActivity : AppCompatActivity() { lateinit var button: Button var counter : Int = 0 set(value) { field = value observable.onNext(value) } val observable : BehaviorSubject<Int> = BehaviorSubject.createDefault(counter) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button = findViewById(R.id.button) button.setOnClickListener(View.OnClickListener { counter++ }) observable.subscribe( Consumer { t -> Log.d("fromObservable", counter.toString()) } ) } } 
  • kotlin consiguiendo un suscriptor para observar un observable usando RxJava2
  • Observables opcionales en combinar
  • Cómo contar el time de ejecución de lo observable
  • No se pudo deducir Kotlin y RxJava
  • Pruebas unitarias Rxjava observables que tienen un retraso
  • Cómo escribir la testing adecuada para el repository de interfaz reactiva que devuelve Observable solo cuando hay algún evento, cómo simular el desencadenamiento de ese evento
  • Obtiene N últimos objects emitidos por observables en RxJava2
  • RxJava BehaviorSubject no emite el último elemento?
  • Comportamiento impar de TestObserver al suscribirse a un Asunto
  • ¿Cómo soluciono el error de inferencia de tipo en un Completable transformado utilizando RxLifecycle.bindToLifecycle ()?
  • Buscando con RxJava no funciona