¿Cambiar notifications en Realm para objects internos?

Cuando tengo un object A que contiene una list de reino de B , si tengo una consulta para una A específica y edito un elemento en su list B ; No recibiré una notificación de cambio

¿Es este el comportamiento deseado?

Muestra de código:

 class ExerciseInfo : RealmObject() { @PrimaryKey var id: String? = null var muscleFields: MuscleFields? = null } class MuscleFields : RealmObject() { var muscles: RealmList<Muscle>? = null } class Muscle : RealmObject() { var id: String? = null var name: String? = null } //Example, performed inside a Realm transaction realm.where(ExerciseInfo::class.java) .findFirst() .muscleFields ?.muscles ?.let{ it.first().name += ":)" } 

Todo lo anterior es código de muestra, pero el escenario es exactamente el mismo.

Puedo verificar que la edición se realiza y almacena en la database; y que no se activa ninguna notificación de cambio para ExeciseInfo RealmObject, independientemente de si Im lo está usando con addChangeListener () o el método Flowable. Además, el mismo escenario funciona si la edición que se realiza se realiza directamente en la class de ejercicio, por ejemplo, editando algunos campos directamente en la class ExerciseInfo y no dentro de otro object.

Espero que tenga sentido. Thought Id publica esto en SO antes del Reino Github, ya que puede ser algo que he echado de less, y no un error.

¿Alguna idea? – Házmelo saber. ¡Gracias!

RealmChangeListener añadido a los objects directamente no será notificado de los cambios en la list (campo de enlace).

Para eso, necesita agregar el oyente a un RealmResults<T> .

Intenta seguir el código en tu actividad

 class SampleActivity extends AppCompatActivity implements RealmChangeListener<Realm> { onCreate(...){ realm.addChangeListener(this);// make sure you init realm transaction } @Override public void onChange(@NonNull Realm realm) { // this method will be call after any change in realm } } 

No olvides eliminar todos los oyentes registrados en el método onDestroy .


O

 realm = Realm.getDefaultInstance(); realm.addChangeListener(new RealmChangeListener<Realm>() { @Override public void onChange(Realm realm) { // do something } }); 
  • Clase de datos Kotlin de RealmObject
  • Float es un campo no válido para la comparación de Realm
  • No se puede configurar el Reino en el proyecto usando Kotlin
  • El complemento "kotlin-noarg" no funciona en el Reino
  • No se puede build el proyecto de Android después de agregar la class Realm
  • Realm executeTransactionAsync no escribe datos en DB
  • Cómo consultar Realm en el background Subprocess usando RxJava2
  • Prueba de Android en kotlin de reino