文書を使用して、レルム(Java)のデータベース(ディレクトリ)
4.1自動更新オブジェクト
RealmObjects
リアルタイムでは、自動的にデータの基礎となるビューを更新することができます。あなたは、オブジェクトを更新する必要はありません。オブジェクトへの変更はすぐにクエリ結果に反映されています。
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Dog myDog = realm.createObject(Dog.class);
myDog.setName("Fido");
myDog.setAge(1);
}
});
Dog myDog = realm.where(Dog.class).equalTo("age", 1).findFirst();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Dog myPuppy = realm.where(Dog.class).equalTo("age", 1).findFirst();
myPuppy.setAge(2);
}
});
myDog.getAge(); // => 2
これは、高速で効率的な維持するために、レルムを行い、また、あなたのコードをより簡単にする、より応答性ではないだけ。あなたの活動や断片が特定に結び付けられている場合RealmObject
やRealmResults
、インスタンス、あなたはUIを更新する前にリフレッシュまたは再取得それらを心配する必要はありません。
あなたは購読することができレルム通知をデータレルムを更新する際に知っています。
4.2カスタムオブジェクト
ほとんどのようなPOJOそれを用いましたRealmObject
。RealmObject
あなたのクラスを展開します。あなたは、公共の場にこれらのフィールドを使用することができ、代わりにセッターとゲッターの単純な代入を使用することができます。
public class Dog extends RealmObject {
public String name;
public int age;
}
あなたは他のクラスの犬と同じように使用することができます:あなたは(検証のために、例えば)getterメソッドとsetterメソッドにロジックを追加することができます、また必要な任意のカスタムメソッドを追加することができます。
レルムにDogオブジェクトに、CreateObjectのかcopyToRealmメソッドを使用してください。
realm.executeTransaction(new Realm.Transaction() {
@Overrride
public void execute(Realm realm) {
Dog dog = realm.createObject(Dog.class);
dog.name = "Fido";
dog.age = 5;
}
};
4.3 RealmModelインタフェース
あなたのクラスはRealmObjectを継承し、実装することでする必要はありませんRealmModelのインタフェースを追加@RealmClass
するノートを:
@RealmClass
public class User implements RealmModel {
}
このインタフェースRealmObject
のすべてのメソッド利用可能な静的メソッドで使用することができます。継承に注意してくださいRealmObject
クラスは必要ありません@RealmClass
ノートをや実装をRealmModel
。
// 使用 RealmObject
user.isValid();
user.addChangeListener(listener);
// 使用 RealmModel
RealmObject.isValid(user);
RealmObject.addChangeListener(user, listener);
4.4 JSON
あなたは、レルムのJSONオブジェクトRealmObjectにマップを追加することができます。JSONオブジェクトは、文字列、することができJSONObjectかのInputStream。レルムはRealmObjectはJSONで未定義任意のプロパティを無視します。Realm.createObjectFromJsonを添加することによって、単一のオブジェクト、およびオブジェクトのリストを追加[Realm.createAllFromJson] [API / IO /レルム/ Realm.html#createAllFromJson-のjava.lang.Class-java.lang.String-)。
// 代表城市的RealmObject
public class City extends RealmObject {
private String city;
private int id;
// getters and setters left out ...
}
// 从字符串插入
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.createObjectFromJson(City.class, "{ city: \"Copenhagen\", id: 1 }");
}
});
// 使用InputStream插入多个items
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
try {
InputStream is = new FileInputStream(new File("path_to_file"));
realm.createAllFromJson(City.class, is);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
JSONオブジェクトのフィールドがnull、および必要なフィールドRealmModelある場合は、レルムは例外をスローします。あなたがオブジェクトを作成し、デフォルトのフィールドに値を設定すると、フィールドはオプションである場合は、そのオブジェクトの更新時とnullにその値を設定します。JSONオブジェクトRealmModelは何のフィールドでない場合は、値がRealmModelで変わりません。
4.5アダプタアダプタ
レルムから支援する抽象ユーティリティクラスを提供OrderedRealmCollections
(RealmResults
およびRealmList
UIウィジェットの標準データにバインドされ、このインタフェースを実装します)。
- RealmBaseAdapterおよび
ListView
使用一緒に。例を見てください。 - RealmRecyclerViewAdapterおよび
RecyclerView
使用一緒に。例を見てください。
アダプターを使用するには、アプリケーションレベルのbuild.gradleに追加の依存関係をプラグ:
dependencies {
compile 'io.realm:android-adapters:2.1.1'
}
あなたはできますここで、アダプタのドキュメントを見つけると、どこその使用例を見つけること。
4.6意図インテント
そのためRealmObjects
実装されていませんParcelable
ので、直接送信することはできないので、あなたが使用されているオブジェクトの識別子を渡す必要があります。オブジェクトが主キーを持っている場合たとえば、マスターキーはテントエクストラバンドルに渡されます。
// 假设我们在'id'字段上有一个带有主键的用户类...
Intent intent = new Intent(getActivity(), ReceivingService.class);
intent.putExtra("person_id", person.getId());
getActivity().startService(intent);
主キー値は、受信側バンドル(活動、サービス、IntentService、BroadcastReceiverなど)から取得し、次にクエリレルムRealmObjectを開いています。
// in onCreate(), onHandleIntent(), etc.
String personId = intent.getStringExtra("person_id");
Realm realm = Realm.getDefaultInstance();
try {
Person person = realm.where(Person.class).equalTo("id", personId).findFirst();
// do something with the person ...
} finally {
realm.close();
}
他のスレッドにレルムを再度開き、オーバーヘッドが非常に小さいです。
あなたは「渡されたオブジェクト」の一部のスレッドの例を見つけることができます作業の例を。この例が示すあなたがIDを渡すと、一般的な使用例でRealmObjectアンドロイドを取得する方法について説明します。