Skip to content

Instantly share code, notes, and snippets.

@Zhuinden
Last active September 3, 2016 16:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Zhuinden/e917936103c62146183fe770bdb9907d to your computer and use it in GitHub Desktop.
Save Zhuinden/e917936103c62146183fe770bdb9907d to your computer and use it in GitHub Desktop.
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) {
super.onCreate(bundle);
Injector.get().inject(this);
postId = getIntent().getLongExtra("postId");
setContentView(R.layout.activity_news);
ButterKnife.bind(this);
realm = RealmManager.getRealm();
realmChangeListener = new RealmChangeListener<RealmResults<NewsPost>>() {
@Override
public void onChange(RealmResults<NewsPost> element) {
NewsPost newsPost = realm.where(NewsPost.class)
.equalTo(NewsPostFields.ID, postId)
.findFirst();
if(newsPost != null) { // if news post was downloaded on background thread, initalize view
initView(newsPost);
}
}
};
listenerSet = realm.where(NewsPost.class)
.findAll();
listenerSet.addChangeListener(realmChangeListener); // listen to changes in `NewsPost` table
NewsPost newsPost = realm.where(NewsPost.class)
.equalTo(NewsPostFields.ID, postId)
.findFirst();
if(newsPost == null) {
// download news post if not available
getNewsPostInteractor.getNewsPost(postId);
} else {
initView(newsPost);
}
}
private void initView(NewsPost newsPost) {
// set views
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment