What is the best way to use List <String> in Realm Android?

I am using the RealmString alternative for List <String> in Realm Android. But I have a problem with RealmChangeListener. I use RealmString in many models such as Dog, Cat, Chicken in the example below. But when any of these changes changes the data, all of them change too.

Example: When I save Dog β†’ Change dog and change cat.

I can fix this problem with RealmDogString, RealmCatString, RealmChickenString, but it duplicates my code. Does anyone have a better solution?

This is my sample code:

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(); } } 
+8
android realm
source share

No one has answered this question yet.

See similar questions:

one
Realm filter results by field of String array

or similar:

2097
Is there a way to run Python on Android?
1844
What is "Context" on Android?
1152
The difference between gravity and layout_gravity on Android
882
A static way to get "Context" in Android?
757
What is the easiest and most reliable way to get the user's current location on Android?
652
What are the best practices for SQLite on Android?
2
Force close onClick of ImageButton, can't understand why
2
setText on a button from another type of Android activity
one
Error copying object in Realm
0
Saving ToggleButton state in ListView using SharedPreferences

All Articles