Loading app/src/main/java/org/asdtm/goodweather/SearchActivity.java +37 −52 Original line number Diff line number Diff line package org.asdtm.goodweather; import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; Loading @@ -13,16 +12,14 @@ import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Filter; import android.widget.Filterable; import android.widget.SearchView; import android.widget.TextView; import org.asdtm.goodweather.model.CitySearch; Loading @@ -33,11 +30,10 @@ import org.asdtm.goodweather.utils.Constants; import java.util.ArrayList; import java.util.List; public class SearchActivity extends AppCompatActivity implements SearchView.OnQueryTextListener { public class SearchActivity extends AppCompatActivity { public static final String TAG = "SearchActivity"; private final String APP_SETTINGS_NAME = "config"; private final String APP_SETTINGS_CITY = "city"; private final String APP_SETTINGS_COUNTRY_CODE = "country_code"; private final String APP_SETTINGS_LATITUDE = "latitude"; Loading @@ -55,15 +51,13 @@ public class SearchActivity extends AppCompatActivity implements SearchView.OnQu } setContentView(R.layout.activity_search); Toolbar toolbar = (Toolbar) findViewById(R.id.search_activity_toolbar); setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } setupActionBar(); setupSearchView(); String APP_SETTINGS_NAME = "config"; mCityPref = getSharedPreferences(APP_SETTINGS_NAME, 0); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.search_city_recycler_view); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.search_recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(SearchActivity.this)); mCites = new ArrayList<>(); Loading @@ -73,6 +67,34 @@ public class SearchActivity extends AppCompatActivity implements SearchView.OnQu loadLastFoundCity(); } private void setupSearchView() { SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE); SearchView searchView = (SearchView) findViewById(R.id.search_view); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); searchView.setIconified(false); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { mSearchCityAdapter.getFilter().filter(query); return true; } @Override public boolean onQueryTextChange(String newText) { mSearchCityAdapter.getFilter().filter(newText); return true; } }); } private void setupActionBar() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } } @Override protected void onResume() { super.onResume(); Loading Loading @@ -158,38 +180,15 @@ public class SearchActivity extends AppCompatActivity implements SearchView.OnQu protected void publishResults(CharSequence charSequence, FilterResults filterResults) { mCites.clear(); if (filterResults.values != null) { mCites.addAll((ArrayList<CitySearch>) filterResults.values); } notifyDataSetChanged(); } }; } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.search, menu); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.menu_search_city).getActionView(); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); searchView.setIconified(false); searchView.onActionViewExpanded(); int searchPlateId = searchView.getContext().getResources().getIdentifier( "android:id/search_plate", null, null); View searchPlateView = searchView.findViewById(searchPlateId); if (searchPlateView != null) { int color = ContextCompat.getColor(SearchActivity.this, R.color.colorPrimary); searchPlateView.setBackgroundColor(color); } searchView.setOnQueryTextListener(this); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { Loading @@ -201,20 +200,6 @@ public class SearchActivity extends AppCompatActivity implements SearchView.OnQu return super.onOptionsItemSelected(item); } @Override public boolean onQueryTextSubmit(String s) { mSearchCityAdapter.getFilter().filter(s); return true; } @Override public boolean onQueryTextChange(String s) { mSearchCityAdapter.getFilter().filter(s); return true; } private void setCity(CitySearch city) { SharedPreferences.Editor editor = mCityPref.edit(); editor.putString(APP_SETTINGS_CITY, city.getCityName()); Loading app/src/main/res/layout/activity_search.xml +32 −30 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:tools="http://schemas.android.com/tools" <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/search_activity_layout" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/search.root" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/search.app_bar" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:layout_height="wrap_content" android:layout_width="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/search_activity_toolbar" android:layout_width="0dp" android:layout_height="56dp" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" android:navigationIcon="?homeAsUpIndicator" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:layout_constraintTop_toTopOf="parent" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" tools:layout_constraintRight_creator="1" app:layout_constraintRight_toRightOf="parent" tools:layout_constraintLeft_creator="1" app:layout_constraintLeft_toLeftOf="parent"/> tools:targetApi="lollipop"> <android.support.v7.widget.SearchView android:id="@+id/search_view" android:layout_width="match_parent" android:layout_height="match_parent" android:imeOptions="actionSearch|flagNoExtractUi" android:inputType="textFilter"/> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/search_city_recycler_view" android:layout_width="0dp" android:layout_height="wrap_content" android:padding="4dp" app:layout_constraintTop_toBottomOf="@id/search_activity_toolbar" tools:layout_constraintRight_creator="1" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" app:layout_constraintRight_toRightOf="parent" tools:layout_constraintLeft_creator="1" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginLeft="8dp" android:layout_marginRight="8dp"/> </android.support.constraint.ConstraintLayout> No newline at end of file android:id="@+id/search.recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout> No newline at end of file app/src/main/res/xml/searchable.xml +1 −3 Original line number Diff line number Diff line Loading @@ -2,7 +2,5 @@ <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:hint="@string/hint_activity_search" android:label="@string/title_activity_search" android:inputType="textFilter" android:imeOptions="actionSearch"> android:label="@string/title_activity_search"> </searchable> No newline at end of file Loading
app/src/main/java/org/asdtm/goodweather/SearchActivity.java +37 −52 Original line number Diff line number Diff line package org.asdtm.goodweather; import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; Loading @@ -13,16 +12,14 @@ import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Filter; import android.widget.Filterable; import android.widget.SearchView; import android.widget.TextView; import org.asdtm.goodweather.model.CitySearch; Loading @@ -33,11 +30,10 @@ import org.asdtm.goodweather.utils.Constants; import java.util.ArrayList; import java.util.List; public class SearchActivity extends AppCompatActivity implements SearchView.OnQueryTextListener { public class SearchActivity extends AppCompatActivity { public static final String TAG = "SearchActivity"; private final String APP_SETTINGS_NAME = "config"; private final String APP_SETTINGS_CITY = "city"; private final String APP_SETTINGS_COUNTRY_CODE = "country_code"; private final String APP_SETTINGS_LATITUDE = "latitude"; Loading @@ -55,15 +51,13 @@ public class SearchActivity extends AppCompatActivity implements SearchView.OnQu } setContentView(R.layout.activity_search); Toolbar toolbar = (Toolbar) findViewById(R.id.search_activity_toolbar); setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } setupActionBar(); setupSearchView(); String APP_SETTINGS_NAME = "config"; mCityPref = getSharedPreferences(APP_SETTINGS_NAME, 0); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.search_city_recycler_view); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.search_recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(SearchActivity.this)); mCites = new ArrayList<>(); Loading @@ -73,6 +67,34 @@ public class SearchActivity extends AppCompatActivity implements SearchView.OnQu loadLastFoundCity(); } private void setupSearchView() { SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE); SearchView searchView = (SearchView) findViewById(R.id.search_view); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); searchView.setIconified(false); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { mSearchCityAdapter.getFilter().filter(query); return true; } @Override public boolean onQueryTextChange(String newText) { mSearchCityAdapter.getFilter().filter(newText); return true; } }); } private void setupActionBar() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } } @Override protected void onResume() { super.onResume(); Loading Loading @@ -158,38 +180,15 @@ public class SearchActivity extends AppCompatActivity implements SearchView.OnQu protected void publishResults(CharSequence charSequence, FilterResults filterResults) { mCites.clear(); if (filterResults.values != null) { mCites.addAll((ArrayList<CitySearch>) filterResults.values); } notifyDataSetChanged(); } }; } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.search, menu); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.menu_search_city).getActionView(); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); searchView.setIconified(false); searchView.onActionViewExpanded(); int searchPlateId = searchView.getContext().getResources().getIdentifier( "android:id/search_plate", null, null); View searchPlateView = searchView.findViewById(searchPlateId); if (searchPlateView != null) { int color = ContextCompat.getColor(SearchActivity.this, R.color.colorPrimary); searchPlateView.setBackgroundColor(color); } searchView.setOnQueryTextListener(this); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { Loading @@ -201,20 +200,6 @@ public class SearchActivity extends AppCompatActivity implements SearchView.OnQu return super.onOptionsItemSelected(item); } @Override public boolean onQueryTextSubmit(String s) { mSearchCityAdapter.getFilter().filter(s); return true; } @Override public boolean onQueryTextChange(String s) { mSearchCityAdapter.getFilter().filter(s); return true; } private void setCity(CitySearch city) { SharedPreferences.Editor editor = mCityPref.edit(); editor.putString(APP_SETTINGS_CITY, city.getCityName()); Loading
app/src/main/res/layout/activity_search.xml +32 −30 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:tools="http://schemas.android.com/tools" <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/search_activity_layout" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/search.root" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/search.app_bar" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:layout_height="wrap_content" android:layout_width="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/search_activity_toolbar" android:layout_width="0dp" android:layout_height="56dp" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" android:navigationIcon="?homeAsUpIndicator" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:layout_constraintTop_toTopOf="parent" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" tools:layout_constraintRight_creator="1" app:layout_constraintRight_toRightOf="parent" tools:layout_constraintLeft_creator="1" app:layout_constraintLeft_toLeftOf="parent"/> tools:targetApi="lollipop"> <android.support.v7.widget.SearchView android:id="@+id/search_view" android:layout_width="match_parent" android:layout_height="match_parent" android:imeOptions="actionSearch|flagNoExtractUi" android:inputType="textFilter"/> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/search_city_recycler_view" android:layout_width="0dp" android:layout_height="wrap_content" android:padding="4dp" app:layout_constraintTop_toBottomOf="@id/search_activity_toolbar" tools:layout_constraintRight_creator="1" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" app:layout_constraintRight_toRightOf="parent" tools:layout_constraintLeft_creator="1" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginLeft="8dp" android:layout_marginRight="8dp"/> </android.support.constraint.ConstraintLayout> No newline at end of file android:id="@+id/search.recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout> No newline at end of file
app/src/main/res/xml/searchable.xml +1 −3 Original line number Diff line number Diff line Loading @@ -2,7 +2,5 @@ <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:hint="@string/hint_activity_search" android:label="@string/title_activity_search" android:inputType="textFilter" android:imeOptions="actionSearch"> android:label="@string/title_activity_search"> </searchable> No newline at end of file