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 / realm-lifecycle-per-screen.java
Created September 3, 2016 14:32
Realm instance lifecycle per Activity/Fragment
public class SomeActivity extends AppCompatActivity {
Realm realm;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
realm = Realm.getDefaultInstance();
}
@Override
@Zhuinden
Zhuinden / realm-ui-thread-manager.java
Created September 3, 2016 14:36
RealmManager from book example
import android.content.Context;
import android.util.Log;
import io.realm.Realm;
import io.realm.RealmConfiguration;
/**
* Created by Zhuinden on 2016.08.16..
*/
public class RealmManager {
@Zhuinden
Zhuinden / realm-ui-thread-singleton.java
Last active September 4, 2016 16:56
Realm Singleton instance for UI thread from Book Example
public class BooksScopeListener extends Fragment { // could go to base class
public BooksScopeListener() {
setRetainInstance(true);
RealmManager.incrementCount();
}
@Override
public void onDestroy() {
RealmManager.decrementCount();
super.onDestroy();
@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-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-book-edit-post.java
Last active July 22, 2018 09:01
Realm.executeTransactionAsync() example from Realm Book Example
public void editPost(final DialogContract dialogContract, final long id) {
Realm realm = RealmManager.getRealm(); // UI thread Realm, called via `onClick()` listener
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
NewsPost post = realm.where(NewsPost.class).equalTo(NewsPostFields.ID, id).findFirst();
// synchronous query by ID on background thread, inside transaction
if(post != null) {
post.setTitle(dialogContract.getTitle());
//...
@Zhuinden
Zhuinden / realm-newspost-model.java
Last active September 4, 2016 06:52
Realm News Post Example Model
public class NewsPost extends RealmObject {
@PrimaryKey
@Required
private long id;
// left nullable as default as example
private String author;
private String title;
@Zhuinden
Zhuinden / realm-databinding-post.java
Created September 4, 2016 18:16
Realm Databinding Observable Post object
public class Post extends RealmObject implements Observable, RealmDataBinding {
@PrimaryKey
private long id;
private String text;
@Bindable
public long getId() {
return id;
}
public interface RealmDataBinding {
interface Factory {
RealmChangeListener create();
}
RealmDataBinding.Factory FACTORY = () -> element -> {
if(element instanceof RealmDataBinding) {
((RealmDataBinding)element).notifyChange();
}
};
@Zhuinden
Zhuinden / realm-databinding-main-activity.java
Last active August 23, 2017 02:38
Realm Data Binding Example - MainActivity
public class MainActivity
extends RealmActivity {
Post post;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
post = realm.where(Post.class).equalTo("id", 1L).findFirst();