package cgeo.geocaching.connector.gc; import cgeo.geocaching.R; import cgeo.geocaching.activity.AbstractActionBarActivity; import cgeo.geocaching.activity.ActivityMixin; import cgeo.geocaching.models.PocketQuery; import cgeo.geocaching.ui.recyclerview.RecyclerViewProvider; import cgeo.geocaching.utils.AndroidRxUtils; import android.app.ProgressDialog; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import java.util.ArrayList; import java.util.List; import io.reactivex.functions.Consumer; import org.apache.commons.collections4.CollectionUtils; public class PocketQueryListActivity extends AbstractActionBarActivity { @NonNull private final List<PocketQuery> pocketQueries = new ArrayList<>(); @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState, R.layout.pocketquery_activity); final PocketQueryListAdapter adapter = new PocketQueryListAdapter(pocketQueries); final RecyclerView view = RecyclerViewProvider.provideRecyclerView(this, R.id.pocketquery_list, true, true); view.setAdapter(adapter); final ProgressDialog waitDialog = ProgressDialog.show(this, getString(R.string.search_pocket_title), getString(R.string.search_pocket_loading), true, true); waitDialog.setCancelable(true); loadInBackground(adapter, waitDialog); } private void loadInBackground(final PocketQueryListAdapter adapter, final ProgressDialog waitDialog) { AndroidRxUtils.bindActivity(this, GCParser.searchPocketQueryListObservable).subscribe(new Consumer<List<PocketQuery>>() { @Override public void accept(final List<PocketQuery> pocketQueryList) { waitDialog.dismiss(); if (CollectionUtils.isEmpty(pocketQueryList)) { ActivityMixin.showToast(PocketQueryListActivity.this, getString(R.string.warn_no_pocket_query_found)); finish(); } pocketQueries.addAll(pocketQueryList); adapter.notifyItemRangeInserted(0, pocketQueryList.size()); } }, new Consumer<Throwable>() { @Override public void accept(final Throwable e) { ActivityMixin.showToast(PocketQueryListActivity.this, getString(R.string.err_read_pocket_query_list)); finish(); } }); } }