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()) } ) } } 
  • Referencia de constructor de Kotlin con generics
  • RxJava zipCon error IDE en Kotlin con Android Studio 3.0
  • ¿Cómo especificar la versión de RxJava al usar RxKotlin?
  • Single.zip completando antes de Success
  • Convierte el código de RxJava a Kotlin correctamente
  • Enfrentando problemas con la implementación de Rx Java con la architecture de flujo en Android kotlin
  • TestScheduler no funciona (Kotlin + RxJava2 + mockito)
  • RxJava salida diferente entre Flowable y Observable con window y Groupby
  • Tipo de devolución diferente en RxJava 2 (actualización desde RxJava1)
  • Cómo contar el time de ejecución de lo observable
  • ¿Por qué mi configuration de RxJava está bloqueando mi subprocess de interfaz de usuario? Trabajar con la callback BluetoothAdapter.startLeScan