Skip to content

Instantly share code, notes, and snippets.

View Zhuinden's full-sized avatar
🤔
Fighting Proguard

Gabor Varadi Zhuinden

🤔
Fighting Proguard
View GitHub Profile
@Zhuinden
Zhuinden / gist:73b252c7c44ca00e794f8cd94a43a9e9
Last active August 11, 2016 11:03
Realm Rx asObservable() example
private Subscription queryDogsByInput() {
return RxTextView.textChanges(editText)
.switchMap(charSequence -> realm.where(Dog.class)
.contains(DogFields.NAME, charSequence.toString())
.findAllSortedAsync(DogFields.NAME)
.asObservable()
).filter(RealmResults::isLoaded) // filter async results while not loaded
.subscribe(dogs -> adapter.updateData(dogs));
}
@Zhuinden
Zhuinden / gist:6767238594603b0d9d047795ecc23b4a
Last active August 11, 2016 11:03
Realm RxJava write transaction
catService.getCats()
.subscribeOn(Schedulers.io())
.retry()
.subscribe(catsBO -> {
try(Realm realm = Realm.getDefaultInstance()) {
Cat defaultCat = new Cat();
long rank;
if(realm.where(Cat.class).count() > 0) {
rank = realm.where(Cat.class).max(CatFields.RANK).longValue();
} else {
@Zhuinden
Zhuinden / gist:05c61f0f47dc9a9ead097de26a129bbd
Last active November 13, 2019 01:38
Realm: say "no" to begin/commit and use execute (and use close!)
// SAY NO TO THIS
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction(); // NO
realm.copyToRealm(dog)
realm.commitTransaction(); // NO NO NO NO NO
// CLOSE THE REALM OH MY GOD WHY
// ----------------------
// SAY YES TO THIS
@Zhuinden
Zhuinden / gist:d4ae72d35357a2397ca52ebab9cc8dcb
Last active August 11, 2016 11:03
Realm auto-update adapter example
adapter = new RealmRecyclerViewAdapter<Dog, DogViewHolder>(getContext(),
realm.where(Dog.class).contains(currentName).findAllAsync(), true) { // query definition + true == automatic updates
@Override
public DogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new DogViewHolder(LayoutInflater.from(parent.getContext())
.inflate(R.layout.view_dog_item, parent, false));
}
@Override
public void onBindViewHolder(DogViewHolder holder, int position) {
@Zhuinden
Zhuinden / gist:d6c5fb007b3c725e2c9625244d8d0daa
Last active July 11, 2017 10:55
Open RealmResults in transaction, not outside of it
try(Realm realm = Realm.getDefaultInstance()) {
final RealmResults<Dog> dogs = realm.where(Dog.class).findAll(); // NO
realm.executeTransaction(inRealm -> { // NO
for(Dog dog : dogs) { // NO
//...
}
});
}
////////////////////
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
mavenCentral()
maven {url "https://clojars.org/repo/"}
maven { url "https://jitpack.io" }
}
dependencies {
apply plugin: 'com.android.application'
//apply plugin: 'com.neenbedankt.android-apt'
//apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'realm-android' // <-- added this line
apply plugin: 'com.android.application'
//apply plugin: 'com.neenbedankt.android-apt'
//apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'realm-android'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
//compileOptions {
#realm
-keepnames public class * extends io.realm.RealmObject
-keep @io.realm.annotations.RealmModule class *
-keep class io.realm.** { *; }
-dontwarn javax.**
-dontwarn io.realm.**
#realm 0.84.1+
-keep class io.realm.annotations.RealmModule
-keep @io.realm.annotations.RealmModule class *
@Zhuinden
Zhuinden / realm-detail-view-example.java
Last active September 3, 2016 16:53
Realm detail view start (Activity)
public class NewsActivity extends AppCompatActivity {
// ...
private RealmChangeListener<RealmResults<NewsPost>> realmChangeListener;
private RealmResults<NewsPost> listenerSet;
private long postId;
private Realm realm;
@Override
protected void onCreate(Bundle bundle) {