diff options
Diffstat (limited to 'main/src/cgeo/geocaching/AbstractPopupActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/AbstractPopupActivity.java | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java index 375d06a..39adae9 100644 --- a/main/src/cgeo/geocaching/AbstractPopupActivity.java +++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java @@ -8,14 +8,19 @@ import cgeo.geocaching.gcvote.GCVote; import cgeo.geocaching.gcvote.GCVoteRating; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Units; +import cgeo.geocaching.sensors.GeoDirHandler; import cgeo.geocaching.sensors.IGeoData; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.ui.CacheDetailsCreator; import cgeo.geocaching.ui.LoggingUI; -import cgeo.geocaching.sensors.GeoDirHandler; import cgeo.geocaching.utils.Log; import org.apache.commons.lang3.StringUtils; +import rx.Observable; +import rx.android.observables.AndroidObservable; +import rx.functions.Action1; +import rx.functions.Func0; +import rx.schedulers.Schedulers; import android.graphics.Rect; import android.os.Bundle; @@ -75,24 +80,20 @@ public abstract class AbstractPopupActivity extends AbstractActivity implements if (!cache.supportsGCVote()) { return; } - - (new Thread("Load GCVote") { + AndroidObservable.fromActivity(this, Observable.defer(new Func0<Observable<GCVoteRating>>() { @Override - public void run() { + public Observable<GCVoteRating> call() { final GCVoteRating rating = GCVote.getRating(cache.getGuid(), geocode); - - if (rating == null) { - return; - } + return rating != null ? Observable.just(rating) : Observable.<GCVoteRating>empty(); + } + }).subscribeOn(Schedulers.io())).subscribe(new Action1<GCVoteRating>() { + @Override + public void call(final GCVoteRating rating) { cache.setRating(rating.getRating()); cache.setVotes(rating.getVotes()); - runOnUiThread(new Runnable() { - @Override - public void run() { - details.addRating(cache); } - }); + details.addRating(cache); } - }).start(); + }); } protected void init() { |
