techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

Android x Realm x ListView

Android x Realm x ListView

概要

Android で DB に Realm を採用してデータを管理。

ListView で表示するまでを行う。

Realm の導入

Java Docs - Realm is a mobile database/ a replacement for SQLite & Core Data にある通り、以下を追記する。

app/build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:0.88.2"
    }
}

apply plugin: 'realm-android'

Sync 実行すれば Realm が使えるようになる。

Realm インスタンスの取得

ここの通りにやったら早速 deprecated !? (困惑

こっちに Best Practices として記載がありこちらが推奨される実装、と。

適当に作った MyApp プロジェクトで下記を実装してみる。

MyApp.java

public class MyApp extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this).build();
    Realm.setDefaultConfiguration(realmConfiguration);
  }
}

MyActivity.java

public class MyActivity extends Activity {
    private Realm realm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        realm = Realm.getDefaultInstance();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        realm.close();
    }
}

とりあえず期待通りの動作ができた。

表示

RealmRecyclerView とかあるみたいだけどとりあえずただの ListView に表示してみる。

RealmQuery<MyModel> query = realm.where(MyModel.class);
RealmResults<MyModel> result = query.findAll();

で全件取得できるので ArrayAdapter に突っ込めば表示が確認できた。

その他

RealmRecyclerView 使う方が楽なのか? ちょっと調べてみよう。