¿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 } }); 
  • Cómo usar Realm en una biblioteca
  • La aplicación del complemento Realm en el proyecto Kotlin produce un error de compilation
  • no se puede crear ArrayList dentro de la subclass RealmObject
  • Basic Realm + Kotlin: RealmObject no está configurando valores pasados
  • Realm, findAllSorted y distinct
  • La notificación de consulta de dominio no se activa con Kotlin
  • Kotlin - Use Realm Module en android
  • El reino Kotlin no está en el esquema
  • Función de extensión Kotlin: reference no resuelta
  • Error de compilation de time al convertir RealmObject Class a Kotlin
  • Cómo implementar un reciclador de carga perezosa. Adaptador de vista como el reciclador de reino. Ver el adaptador usando kotlin.