package com.mcxtzhang.realmdemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import io.realm.Realm; import io.realm.RealmChangeListener; import io.realm.RealmResults; public class MainActivity extends AppCompatActivity { private Realm realm; @Override protected void onDestroy() { super.onDestroy(); realm.close(); // Remember to close Realm when done. } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialize Realm Realm.init(MainActivity.this); realm = Realm.getDefaultInstance(); findViewById(R.id.btnInsert).setOnClickListener(new View.OnClickListener() { public static final String TAG = "zxt/realm"; @Override public void onClick(View v) { // Use them like regular java objects Worker dog = new Worker(); dog.setName("Rex"); dog.setAge(1); // Query Realm for all dogs younger than 2 years old final RealmResults<Worker> puppies = realm.where(Worker.class).lessThan("age", 2).findAll(); Log.d(TAG, "onClick() called with: puppies.size(); = [" + puppies.size() + "]"); // => 0 because no dogs have been added to the Realm yet // Persist your data in a transaction realm.beginTransaction(); final Worker managedDog = realm.copyToRealm(dog); // Persist unmanaged objects Company person = realm.createObject(Company.class, 2); // Create managed objects directly person.getWorkers().add(managedDog); realm.commitTransaction(); // Listeners will be notified when data changes puppies.addChangeListener(new RealmChangeListener<RealmResults<Worker>>() { @Override public void onChange(RealmResults<Worker> results) { // Query results are updated in real time Log.d(TAG, "onChange() called with: results = [" + results.size() + "]"); Log.d(TAG, "onChange() called with: puppies.size(); = [" + puppies.size() + "]"); // => 1 } }); // Asynchronously update objects on a background thread realm.executeTransactionAsync(new Realm.Transaction() { @Override public void execute(Realm bgRealm) { Worker dog = bgRealm.where(Worker.class).equalTo("age", 1).findFirst(); dog.setAge(3); } }, new Realm.Transaction.OnSuccess() { @Override public void onSuccess() { Log.d(TAG, "onSuccess() puppies.size():" + puppies.size()); Log.d(TAG, "onSuccess() managedDog.getAge():" + managedDog.getAge()); // Original queries and Realm objects are automatically updated. puppies.size(); // => 0 because there are no more puppies younger than 2 years old managedDog.getAge(); // => 3 the dogs age is updated } }); } }); findViewById(R.id.btnQuery).setOnClickListener(new View.OnClickListener() { public static final String TAG = "zxt/reaml"; @Override public void onClick(View v) { Worker first = realm.where(Worker.class).findFirst(); Log.d(TAG, "onClick() called with: first = [" + first + "]"); } }); } }