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()) } ) } } 
  • RxAndroid - Manejar errores con el operador Zip
  • RxJava usando Kotlin - cómo sincronizar 2 methods asíncronos, refactorizar desde Java
  • Cambie Flowable <List <Obj1 >> a Flowable <List <Obj2 >> en la habitación
  • RxJava manejando múltiples devoluciones de llamada dentro de un observable
  • Proguard: ¿Qué regla puedo agregar para evitar no puedo encontrar la class referenceda?
  • Cómo burlarse del repository reactivo que devuelve Observable
  • Observables opcionales en combinar
  • Problema de encadenamiento Completable after flatMapCompletable
  • Cómo hacer que la function regrese Observable
  • Llamar a un RxJava Single In Kotlin Lambda
  • Manejo de errores de suscripción anidada RX2.0