package cgeo.geocaching; import cgeo.geocaching.activity.AbstractListActivity; import cgeo.geocaching.location.AndroidGeocoder; import cgeo.geocaching.location.GCGeocoder; import cgeo.geocaching.location.MapQuestGeocoder; import cgeo.geocaching.ui.AddressListAdapter; import rx.Observable; import rx.android.app.AppObservable; import rx.functions.Action1; import android.app.ProgressDialog; import android.location.Address; import android.os.Bundle; import java.util.List; public class AddressListActivity extends AbstractListActivity { @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState, R.layout.addresslist_activity); final AddressListAdapter adapter = new AddressListAdapter(this); setListAdapter(adapter); final String keyword = getIntent().getStringExtra(Intents.EXTRA_KEYWORD); final ProgressDialog waitDialog = ProgressDialog.show(this, res.getString(R.string.search_address_started), keyword, true); waitDialog.setCancelable(true); lookupAddressInBackground(keyword, adapter, waitDialog); } private void lookupAddressInBackground(final String keyword, final AddressListAdapter adapter, final ProgressDialog waitDialog) { final Observable
geocoderObservable = new AndroidGeocoder(this).getFromLocationName(keyword) .onErrorResumeNext(MapQuestGeocoder.getFromLocationName(keyword)) .onErrorResumeNext(GCGeocoder.getFromLocationName(keyword)); AppObservable.bindActivity(this, geocoderObservable.toList()).subscribe(new Action1