Here is a summary of how to implement the basic Realm. This time, I will explain using the code of the application I am currently creating.
First of all, add the classpath to your build.gradle file.
uildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath "io.realm:realm-gradle-plugin:5.1.0"
    }
}
This is the part added by "classpath" io.realm: realm-gradle-plugin: 5.1.0 "" in the above code.
Next, create a subclass of RealmObject and define the object.
public class Recipe extends RealmObject {
    @PrimaryKey
    int id;
    @Required
    private String name;
    @Required
    private String cookingTime;
Using a primary key makes objects a little slower to create and update, but faster to find. You cannot specify multiple fields as the primary key.
After defining, prepare getters and setters.
public int getId() {
        return id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setCookingTime(String cookingTime) {
        this.cookingTime = cookingTime;
    }
    public void setId(int id) {
        this.id = id;
    }
}
Next, define the model.
Create new and update edits as follows. Models with a primary key can use copyToRealmOrUpdate () to create or update objects.
public class RecipeModel {
    private Realm mRealm = Realm.getDefaultInstance();
    /**
     *New recipe creation or edit update
     *
     * @param recipeId Recipe id
     * @param recipeName Recipe name
     * @param cookingTime Cooking time
     */
    public void copyOrUpdate(@Nullable Integer recipeId, String recipeName, String cookingTime) {
        if (recipeId == null) {
            recipeId = makeRecipeId();
        }
        Recipe recipe = new Recipe();
        recipe.setId(recipeId);
        recipe.setName(recipeName);
        recipe.setCookingTime(cookingTime);
        mRealm.beginTransaction();
        mRealm.copyToRealmOrUpdate(recipe);
        mRealm.commitTransaction();
    }
If id is null, create a new one.
Delete it as follows.
    /**
     *Delete recipe
     *
     * @param recipeId Recipe id
     */
    public void deleteRecipe(int recipeId) {
        mRealm.beginTransaction();
        //From the list of recipes, retrieve the first recipe with an id that matches recipeId
        Recipe recipe = mRealm.where(Recipe.class).equalTo("id", recipeId).findFirst();
        if (recipe != null) {
            recipe.deleteFromRealm();
        }
        mRealm.commitTransaction();
    }
① Add classpath to build.gradle file ② Object definition ③ Model definition
Realm makes it easy to implement a database in these three steps. Please try by all means try.
Recommended Posts