https://github.com/zhuinden/realm-databind-experiment
Making Realm work with Databinding.
https://github.com/zhuinden/realm-databind-experiment
Last synced: about 2 months ago
JSON representation
Making Realm work with Databinding.
- Host: GitHub
- URL: https://github.com/zhuinden/realm-databind-experiment
- Owner: Zhuinden
- Created: 2016-09-04T17:29:01.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2016-09-04T18:03:54.000Z (almost 9 years ago)
- Last Synced: 2024-10-26T21:34:48.258Z (8 months ago)
- Language: Java
- Homepage: https://medium.com/@Zhuinden/realm-1-2-0-android-data-binding-1dc06822287f#.n87ja9w9t
- Size: 94.7 KB
- Stars: 8
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# realm-databind-experiment
Making Realm work with Databinding.Look at this beautiful RealmObject
``` java
package com.zhuinden.realmdatabind.realm.objects;import android.databinding.Bindable;
import android.databinding.Observable;
import android.databinding.PropertyChangeRegistry;import com.zhuinden.realmdatabind.BR;
import com.zhuinden.realmdatabind.realm.databind.RealmDataBinding;import io.realm.RealmObject;
import io.realm.annotations.Ignore;
import io.realm.annotations.PrimaryKey;/*
* Created by Zhuinden on 2016.09.04..
*/
public class Post extends RealmObject implements Observable, RealmDataBinding {
@PrimaryKey
private long id;private String text;
@Ignore
private transient PropertyChangeRegistry mCallbacks;@Bindable
public long getId() {
return id;
}public void setId(long id) {
this.id = id;
if(!isValid()) { // !isManaged() in Realm 2.0
notifyPropertyChanged(BR.id);
}
}@Bindable
public String getText() {
return text;
}public void setText(String text) {
this.text = text;
if(!isValid()) { // !isManaged() in Realm 2.0
notifyPropertyChanged(BR.text);
}
}@Override
public synchronized void addOnPropertyChangedCallback(OnPropertyChangedCallback callback) {
if (mCallbacks == null) {
mCallbacks = new PropertyChangeRegistry();
}
mCallbacks.add(callback);
}@Override
public synchronized void removeOnPropertyChangedCallback(OnPropertyChangedCallback callback) {
if (mCallbacks != null) {
mCallbacks.remove(callback);
}
}/**
* Notifies listeners that all properties of this instance have changed.
*/
@Override
public synchronized void notifyChange() {
if (mCallbacks != null) {
mCallbacks.notifyCallbacks(this, 0, null);
}
}/**
* Notifies listeners that a specific property has changed. The getter for the property
* that changes should be marked with {@link Bindable} to generate a field in
*BR
to be used asfieldId
.
*
* @param fieldId The generated BR id for the Bindable field.
*/
public void notifyPropertyChanged(int fieldId) {
if (mCallbacks != null) {
mCallbacks.notifyCallbacks(this, fieldId, null);
}
}
}
```