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: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: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: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));
}
// 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
#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-news-post-recycler.java
Created September 3, 2016 15:16
Realm NewsPost Recycler Adapter
adapter = new RealmRecyclerViewAdapter<NewsPost, NewsPostViewHolder>(getContext(),
realm.where(NewsPost.class).findAllSortedAsync(NewsPostFields.MODIFIED, Sort.DESCENDING), true) { // query definition + true == automatic updates
@Override
public NewsPostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new NewsPostViewHolder(LayoutInflater.from(parent.getContext())
.inflate(R.layout.view_news_post_item, parent, false));
}
@Override
public void onBindViewHolder(NewsPostViewHolder holder, int position) {
@Zhuinden
Zhuinden / realm-background-operation-example-retrofit2.java
Last active September 3, 2016 16:07
Realm background operation with Retrofit2 in AsyncTask
public class GetNewsPostAsyncTask
extends AsyncTask<Void, Void, Void> {
private Retrofit retrofit;
private ApiService apiService;
private long postId;
public GetNewsPostAsyncTask(Retrofit retrofit, ApiService apiService, long postId) {
this.retrofit = retrofit;
this.apiService = apiService;
@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) {
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 {