@Override public boolean onCreateOptionsMenu(Menu menu) { this.optionsMenu = menu; getMenuInflater().inflate(R.menu.stations_list, menu); if (jsonDownloadTask != null && (jsonDownloadTask.getStatus() == AsyncTask.Status.PENDING || jsonDownloadTask.getStatus() == AsyncTask.Status.RUNNING)) { setRefreshActionButtonState(true); } SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); searchView.setSearchableInfo(manager.getSearchableInfo(getComponentName())); searchView.setOnQueryTextListener( new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) { return false; } @Override public boolean onQueryTextChange(String s) { loadData(s); return true; } }); return true; }
@Override protected void onResume() { super.onResume(); if ((jsonDownloadTask != null && jsonDownloadTask.getStatus() == AsyncTask.Status.FINISHED)) { long dbLastUpdate = settings.getLong(PREF_KEY_DB_LAST_UPDATE, -1); long currentTime = System.currentTimeMillis(); /* update automatically if data are more than 10 min old */ if ((dbLastUpdate != -1) && ((currentTime - dbLastUpdate) > 600000)) { String networkId = settings.getString(PREF_KEY_NETWORK_ID, ""); String stationUrl = BASE_URL + "/" + networkId; jsonDownloadTask = new JSONDownloadTask(); jsonDownloadTask.execute(stationUrl); } } }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PICK_NETWORK_REQUEST) { Log.d(TAG, "PICK_NETWORK_REQUEST"); if (resultCode == RESULT_OK) { Log.d(TAG, "RESULT_OK"); String stationUrl = BASE_URL + "/" + data.getExtras().getString("network-id"); jsonDownloadTask = new JSONDownloadTask(); jsonDownloadTask.execute(stationUrl); } } }
@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_settings: Intent settingsIntent = new Intent(this, SettingsActivity.class); startActivity(settingsIntent); return true; case R.id.action_refresh: String networkId = PreferenceManager.getDefaultSharedPreferences(this).getString(PREF_KEY_NETWORK_ID, ""); String stationUrl = BASE_URL + "/" + networkId; jsonDownloadTask = new JSONDownloadTask(); jsonDownloadTask.execute(stationUrl); return true; case R.id.action_map: Intent mapIntent = new Intent(this, MapActivity.class); startActivity(mapIntent); default: return super.onOptionsItemSelected(item); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_stations_list); viewPager = (ViewPager) findViewById(R.id.viewPager); viewPager.setOnPageChangeListener( new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled( int position, float positionOffset, int positionOffsetPixels) {} @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); } @Override public void onPageScrollStateChanged(int state) {} }); stationsDataSource = new StationsDataSource(this); stations = stationsDataSource.getStations(); favStations = stationsDataSource.getFavoriteStations(); actionBar = getActionBar(); actionBar.addTab( actionBar.newTab().setText(getString(R.string.all_stations)).setTabListener(this)); actionBar.addTab( actionBar.newTab().setText(getString(R.string.favorite_stations)).setTabListener(this)); actionBar.setHomeButtonEnabled(false); settings = PreferenceManager.getDefaultSharedPreferences(this); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); tabsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(tabsPagerAdapter); boolean firstRun = settings.getString(PREF_KEY_NETWORK_ID, "").isEmpty(); setDBLastUpdateText(); if (firstRun) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(R.string.welcome_dialog_message); builder.setTitle(R.string.welcome_dialog_title); builder.setPositiveButton( R.string.welcome_dialog_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(StationsListActivity.this, BikeNetworksListActivity.class); startActivityForResult(intent, PICK_NETWORK_REQUEST); } }); builder.setNegativeButton( R.string.welcome_dialog_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); AlertDialog dialog = builder.create(); dialog.show(); } else { if (savedInstanceState != null) { bikeNetwork = (BikeNetwork) savedInstanceState.getSerializable("bikeNetwork"); stations = (ArrayList<Station>) savedInstanceState.getSerializable("stations"); favStations = (ArrayList<Station>) savedInstanceState.getSerializable("favStations"); } else { String networkId = settings.getString(PREF_KEY_NETWORK_ID, ""); String stationUrl = BASE_URL + "/" + networkId; jsonDownloadTask = new JSONDownloadTask(); jsonDownloadTask.execute(stationUrl); } } }