Как лучше всего использовать List <String> в Realm Android?

Я использую RealmString альтернативу List <String> в Realm Android. Но у меня есть проблема с RealmChangeListener. Я использую RealmString во многих моделях, таких как Dog, Cat, Chicken в следующем примере. Но когда кто-то в этом меняет данные, все они тоже меняются.

Пример: Когда я сохраняю Dog -> Dog Change и Cat Change тоже.

Я могу решить эту проблему, используя RealmDogString, RealmCatString, RealmChickenString, но это дублирует мой код. У кого-нибудь есть лучшее решение?

Это мой пример кода:

public class RealmTestActivity extends AppCompatActivity {
    private Context context;
    private Realm realm;

    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_realm_test);

        Stetho.initialize(
            Stetho.newInitializerBuilder(this)
                .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
                .enableWebKitInspector(RealmInspectorModulesProvider.builder(this).build()).build());

        context = this;

        RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build();
        Realm.setDefaultConfiguration(realmConfig);
        realm = Realm.getDefaultInstance();

        final RealmResults<Dog> puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
        puppies.addChangeListener(new RealmChangeListener<RealmResults<Dog>>() {
          @Override
          public void onChange(RealmResults<Dog> results) {
            System.out.println("XXX Dog ::" + puppies.size());
            Toast.makeText(context, "Dog Change", Toast.LENGTH_SHORT).show();
            puppies.size();
          }});


        final RealmResults<Cat> puppiesCat = realm.where(Cat.class).lessThan("age", 2).findAll();
        puppiesCat.addChangeListener(new RealmChangeListener<RealmResults<Cat>>() {
          @Override
          public void onChange(RealmResults<Cat> results) {
            System.out.println("XXX Cat  ::" + puppiesCat.size());
            Toast.makeText(context, "Cat Change", Toast.LENGTH_SHORT).show();
          }
        });
    }

    public void saveDog(View view) {
        Dog dog = new Dog();
        dog.setName("Bella");
        dog.setAge(1);
        RealmList<RealmString> realmStrings = new RealmList<RealmString>();
        RealmString realmString = new RealmString();
        realmString.setValue("link_Bella.png");
        realmStrings.add(realmString);
        dog.setImage(realmStrings);

        realm.beginTransaction();
        realm.copyToRealm(dog);
        realm.commitTransaction();
    }

    public void saveCat(View view) {
        Cat cat = new Cat();
        cat.setName("Oliver");
        cat.setAge(1);
        RealmList<RealmString> realmStrings_2 = new RealmList<RealmString>();
        RealmString realmString_2 = new RealmString();
        realmString_2.setValue("link_Oliver.png");
        realmStrings_2.add(realmString_2);
        cat.setImage(realmStrings_2);
        realm.beginTransaction();
        realm.copyToRealm(cat);
        realm.commitTransaction();
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос