diff --git a/app/src/main/java/org/xbmc/kore/ui/AbstractCursorListFragment.java b/app/src/main/java/org/xbmc/kore/ui/AbstractCursorListFragment.java
index 88b214b..2ef7cd3 100644
--- a/app/src/main/java/org/xbmc/kore/ui/AbstractCursorListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/AbstractCursorListFragment.java
@@ -17,6 +17,7 @@
package org.xbmc.kore.ui;
import android.annotation.TargetApi;
+import android.app.Activity;
import android.content.Intent;
import android.content.ServiceConnection;
import android.database.Cursor;
@@ -25,15 +26,20 @@ import android.support.annotation.Nullable;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
+import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.SearchView;
+import android.text.TextUtils;
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.AdapterView;
+import android.widget.BaseAdapter;
import android.widget.CursorAdapter;
+import android.widget.EditText;
import android.widget.Toast;
import org.xbmc.kore.R;
@@ -54,6 +60,8 @@ public abstract class AbstractCursorListFragment extends AbstractListFragment
SwipeRefreshLayout.OnRefreshListener {
private static final String TAG = LogUtils.makeLogTag(AbstractCursorListFragment.class);
+ private final String BUNDLE_KEY_SEARCH_QUERY = "search_query";
+
private ServiceConnection serviceConnection;
private HostInfo hostInfo;
@@ -66,7 +74,13 @@ public abstract class AbstractCursorListFragment extends AbstractListFragment
// The search filter to use in the loader
private String searchFilter = null;
+ private String savedSearchFilter;
+ private boolean supportsSearch;
+ private boolean loaderLoading;
+ private SearchView searchView;
+
+ abstract protected void onListItemClicked(View view);
abstract protected CursorLoader createCursorLoader();
@TargetApi(16)
@@ -84,6 +98,11 @@ public abstract class AbstractCursorListFragment extends AbstractListFragment
adapter = (CursorAdapter) getAdapter();
+ if (savedInstanceState != null) {
+ savedSearchFilter = savedInstanceState.getString(BUNDLE_KEY_SEARCH_QUERY);
+ }
+ searchFilter = savedSearchFilter;
+
return root;
}
@@ -118,10 +137,34 @@ public abstract class AbstractCursorListFragment extends AbstractListFragment
SyncUtils.disconnectFromLibrarySyncService(getActivity(), serviceConnection);
}
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ if (!TextUtils.isEmpty(searchFilter)) {
+ savedSearchFilter = searchFilter;
+ }
+ outState.putString(BUNDLE_KEY_SEARCH_QUERY, savedSearchFilter);
+ super.onSaveInstanceState(outState);
+ }
+
+ @Override
+ protected AdapterView.OnItemClickListener createOnItemClickListener() {
+ return new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ saveSearchState();
+ onListItemClicked(view);
+ }
+ };
+ }
+
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.abstractcursorlistfragment, menu);
+ if (supportsSearch) {
+ setupSearchMenuItem(menu, inflater);
+ }
+
super.onCreateOptionsMenu(menu, inflater);
}
@@ -204,6 +247,18 @@ public abstract class AbstractCursorListFragment extends AbstractListFragment
}
}
+ /**
+ * Use this to indicate your fragment supports search queries.
+ * Get the entered search query using {@link #getSearchFilter()}
+ *
+ * Note: make sure this is set before {@link #onCreateOptionsMenu(Menu, MenuInflater)} is called.
+ * For instance in {@link #onAttach(Activity)}
+ * @param supportsSearch true if you support search queries, false otherwise
+ */
+ public void setSupportsSearch(boolean supportsSearch) {
+ this.supportsSearch = supportsSearch;
+ }
+
protected void onSwipeRefresh() {
LogUtils.LOGD(TAG, "Swipe, starting sync for: " + getListSyncType());
// Start the syncing process
@@ -218,8 +273,15 @@ public abstract class AbstractCursorListFragment extends AbstractListFragment
/** {@inheritDoc} */
@Override
public boolean onQueryTextChange(String newText) {
+ if ((!searchView.hasFocus()) && TextUtils.isEmpty(newText)) {
+ //onQueryTextChange called as a result of manually expanding the searchView in setupSearchMenuItem(...)
+ return true;
+ }
+
searchFilter = newText;
- getLoaderManager().restartLoader(LOADER, null, this);
+
+ restartLoader();
+
return true;
}
@@ -236,12 +298,14 @@ public abstract class AbstractCursorListFragment extends AbstractListFragment
/** {@inheritDoc} */
@Override
public Loader onCreateLoader(int i, Bundle bundle) {
+ loaderLoading = true;
return createCursorLoader();
}
/** {@inheritDoc} */
@Override
public void onLoadFinished(Loader cursorLoader, Cursor cursor) {
+ loaderLoading = false;
adapter.swapCursor(cursor);
// To prevent the empty text from appearing on the first load, set it now
emptyView.setText(getString(R.string.swipe_down_to_refresh));
@@ -253,6 +317,12 @@ public abstract class AbstractCursorListFragment extends AbstractListFragment
adapter.swapCursor(null);
}
+ /**
+ * Save the search state of the list fragment
+ */
+ public void saveSearchState() {
+ savedSearchFilter = searchFilter;
+ }
/**
* @return text entered in searchview
@@ -265,6 +335,58 @@ public abstract class AbstractCursorListFragment extends AbstractListFragment
* Use this to reload the items in the list
*/
public void refreshList() {
- getLoaderManager().restartLoader(LOADER, null, this);
+ restartLoader();
+ }
+
+ private void setupSearchMenuItem(Menu menu, MenuInflater inflater) {
+ inflater.inflate(R.menu.media_search, menu);
+ MenuItem searchMenuItem = menu.findItem(R.id.action_search);
+ if (searchMenuItem != null) {
+ searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
+ searchView.setOnQueryTextListener(this);
+ searchView.setQueryHint(getString(R.string.action_search));
+ if ((savedSearchFilter != null) && (!TextUtils.isEmpty(savedSearchFilter))){
+ searchMenuItem.expandActionView();
+ searchView.setQuery(savedSearchFilter, false);
+ searchView.clearFocus();
+ }
+
+ MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() {
+ @Override
+ public boolean onMenuItemActionExpand(MenuItem item) {
+ return true;
+ }
+
+ @Override
+ public boolean onMenuItemActionCollapse(MenuItem item) {
+ searchFilter = savedSearchFilter = null;
+ restartLoader();
+ return true;
+ }
+ });
+ }
+
+ //Handle clearing search query using the close button (X button).
+ View view = searchView.findViewById(R.id.search_close_btn);
+ if (view != null) {
+ view.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ EditText editText = (EditText) searchView.findViewById(R.id.search_src_text);
+ editText.setText("");
+ searchView.setQuery("", false);
+ searchFilter = savedSearchFilter = "";
+ restartLoader();
+ }
+ });
+ }
+ }
+
+ private void restartLoader() {
+ //When loader is restarted while current loader hasn't finished yet,
+ //it may result in none of the loaders finishing.
+ if(!loaderLoading) {
+ getLoaderManager().restartLoader(LOADER, null, this);
+ }
}
}
diff --git a/app/src/main/java/org/xbmc/kore/ui/AlbumListFragment.java b/app/src/main/java/org/xbmc/kore/ui/AlbumListFragment.java
index 6bf8d22..5c63ec4 100644
--- a/app/src/main/java/org/xbmc/kore/ui/AlbumListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/AlbumListFragment.java
@@ -24,16 +24,11 @@ import android.net.Uri;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.support.v4.content.CursorLoader;
-import android.support.v4.view.MenuItemCompat;
-import android.support.v7.widget.SearchView;
import android.text.TextUtils;
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.AdapterView;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.PopupMenu;
@@ -98,16 +93,11 @@ public class AlbumListFragment extends AbstractCursorListFragment {
}
@Override
- protected AdapterView.OnItemClickListener createOnItemClickListener() {
- return new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- // Get the movie id from the tag
- ViewHolder tag = (ViewHolder) view.getTag();
- // Notify the activity
- listenerActivity.onAlbumSelected(tag);
- }
- };
+ protected void onListItemClicked(View view) {
+ // Get the movie id from the tag
+ ViewHolder tag = (ViewHolder) view.getTag();
+ // Notify the activity
+ listenerActivity.onAlbumSelected(tag);
}
@Override
@@ -160,6 +150,8 @@ public class AlbumListFragment extends AbstractCursorListFragment {
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnAlbumSelectedListener");
}
+
+ setSupportsSearch(true);
}
@Override
@@ -168,22 +160,6 @@ public class AlbumListFragment extends AbstractCursorListFragment {
listenerActivity = null;
}
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- if (!isAdded()) {
- // HACK: Fix crash reported on Play Store. Why does this is necessary is beyond me
- super.onCreateOptionsMenu(menu, inflater);
- return;
- }
-
- inflater.inflate(R.menu.media_search, menu);
- MenuItem searchItem = menu.findItem(R.id.action_search);
- SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
- searchView.setOnQueryTextListener(this);
- searchView.setQueryHint(getString(R.string.action_search_albums));
- super.onCreateOptionsMenu(menu, inflater);
- }
-
/**
* Album list query parameters.
*/
diff --git a/app/src/main/java/org/xbmc/kore/ui/ArtistListFragment.java b/app/src/main/java/org/xbmc/kore/ui/ArtistListFragment.java
index dc9cec5..dec9d89 100644
--- a/app/src/main/java/org/xbmc/kore/ui/ArtistListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/ArtistListFragment.java
@@ -23,16 +23,11 @@ import android.database.Cursor;
import android.net.Uri;
import android.provider.BaseColumns;
import android.support.v4.content.CursorLoader;
-import android.support.v4.view.MenuItemCompat;
-import android.support.v7.widget.SearchView;
import android.text.TextUtils;
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.AdapterView;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.PopupMenu;
@@ -67,16 +62,11 @@ public class ArtistListFragment extends AbstractCursorListFragment {
protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_MUSIC; }
@Override
- protected AdapterView.OnItemClickListener createOnItemClickListener() {
- return new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- // Get the artist id from the tag
- ViewHolder tag = (ViewHolder) view.getTag();
- // Notify the activity
- listenerActivity.onArtistSelected(tag);
- }
- };
+ protected void onListItemClicked(View view) {
+ // Get the artist id from the tag
+ ViewHolder tag = (ViewHolder) view.getTag();
+ // Notify the activity
+ listenerActivity.onArtistSelected(tag);
}
@Override
@@ -109,6 +99,7 @@ public class ArtistListFragment extends AbstractCursorListFragment {
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnArtistSelectedListener");
}
+ setSupportsSearch(true);
}
@Override
@@ -117,21 +108,6 @@ public class ArtistListFragment extends AbstractCursorListFragment {
listenerActivity = null;
}
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- if (!isAdded()) {
- // HACK: Fix crash reported on Play Store. Why does this is necessary is beyond me
- super.onCreateOptionsMenu(menu, inflater);
- return;
- }
- inflater.inflate(R.menu.media_search, menu);
- MenuItem searchItem = menu.findItem(R.id.action_search);
- SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
- searchView.setOnQueryTextListener(this);
- searchView.setQueryHint(getString(R.string.action_search_artists));
- super.onCreateOptionsMenu(menu, inflater);
- }
-
/**
* Artist list query parameters.
*/
diff --git a/app/src/main/java/org/xbmc/kore/ui/AudioGenresListFragment.java b/app/src/main/java/org/xbmc/kore/ui/AudioGenresListFragment.java
index cd09315..09107ce 100644
--- a/app/src/main/java/org/xbmc/kore/ui/AudioGenresListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/AudioGenresListFragment.java
@@ -22,16 +22,11 @@ import android.database.Cursor;
import android.net.Uri;
import android.provider.BaseColumns;
import android.support.v4.content.CursorLoader;
-import android.support.v4.view.MenuItemCompat;
-import android.support.v7.widget.SearchView;
import android.text.TextUtils;
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.AdapterView;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.PopupMenu;
@@ -64,16 +59,11 @@ public class AudioGenresListFragment extends AbstractCursorListFragment {
protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_MUSIC; }
@Override
- protected AdapterView.OnItemClickListener createOnItemClickListener() {
- return new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- // Get the movie id from the tag
- ViewHolder tag = (ViewHolder) view.getTag();
- // Notify the activity
- listenerActivity.onAudioGenreSelected(tag.genreId, tag.genreTitle);
- }
- };
+ protected void onListItemClicked(View view) {
+ // Get the movie id from the tag
+ ViewHolder tag = (ViewHolder) view.getTag();
+ // Notify the activity
+ listenerActivity.onAudioGenreSelected(tag.genreId, tag.genreTitle);
}
@Override
@@ -106,6 +96,7 @@ public class AudioGenresListFragment extends AbstractCursorListFragment {
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnAudioGenreSelectedListener");
}
+ setSupportsSearch(true);
}
@Override
@@ -114,23 +105,6 @@ public class AudioGenresListFragment extends AbstractCursorListFragment {
listenerActivity = null;
}
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- if (!isAdded()) {
- // HACK: Fix crash reported on Play Store. Why does this is necessary is beyond me
- super.onCreateOptionsMenu(menu, inflater);
- return;
- }
-
- inflater.inflate(R.menu.media_search, menu);
- MenuItem searchItem = menu.findItem(R.id.action_search);
- SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
- searchView.setOnQueryTextListener(this);
- searchView.setQueryHint(getString(R.string.action_search_genres));
- super.onCreateOptionsMenu(menu, inflater);
- }
-
-
/**
* Audio genres list query parameters.
*/
diff --git a/app/src/main/java/org/xbmc/kore/ui/MovieListFragment.java b/app/src/main/java/org/xbmc/kore/ui/MovieListFragment.java
index ea6e24d..430a69a 100644
--- a/app/src/main/java/org/xbmc/kore/ui/MovieListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/MovieListFragment.java
@@ -25,8 +25,6 @@ import android.net.Uri;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
import android.support.v4.content.CursorLoader;
-import android.support.v4.view.MenuItemCompat;
-import android.support.v7.widget.SearchView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -34,7 +32,6 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.AdapterView;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;
@@ -67,16 +64,11 @@ public class MovieListFragment extends AbstractCursorListFragment {
protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_MOVIES; }
@Override
- protected AdapterView.OnItemClickListener createOnItemClickListener() {
- return new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- // Get the movie id from the tag
- ViewHolder tag = (ViewHolder) view.getTag();
- // Notify the activity
- listenerActivity.onMovieSelected(tag);
- }
- };
+ protected void onListItemClicked(View view) {
+ // Get the movie id from the tag
+ ViewHolder tag = (ViewHolder) view.getTag();
+ // Notify the activity
+ listenerActivity.onMovieSelected(tag);
}
@Override
@@ -136,6 +128,7 @@ public class MovieListFragment extends AbstractCursorListFragment {
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnMovieSelectedListener");
}
+ setSupportsSearch(true);
}
@Override
@@ -154,12 +147,6 @@ public class MovieListFragment extends AbstractCursorListFragment {
inflater.inflate(R.menu.movie_list, menu);
- // Setup search view
- MenuItem searchItem = menu.findItem(R.id.action_search);
- SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
- searchView.setOnQueryTextListener(this);
- searchView.setQueryHint(getString(R.string.action_search_movies));
-
// Setup filters
MenuItem hideWatched = menu.findItem(R.id.action_hide_watched),
ignoreArticles = menu.findItem(R.id.action_ignore_prefixes),
diff --git a/app/src/main/java/org/xbmc/kore/ui/MoviesActivity.java b/app/src/main/java/org/xbmc/kore/ui/MoviesActivity.java
index faa6088..4216640 100644
--- a/app/src/main/java/org/xbmc/kore/ui/MoviesActivity.java
+++ b/app/src/main/java/org/xbmc/kore/ui/MoviesActivity.java
@@ -54,6 +54,8 @@ public class MoviesActivity extends BaseActivity
private boolean clearSharedElements;
+ private MovieListFragment movieListFragment;
+
@TargetApi(21)
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -70,7 +72,7 @@ public class MoviesActivity extends BaseActivity
navigationDrawerFragment.setUp(R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout));
if (savedInstanceState == null) {
- MovieListFragment movieListFragment = new MovieListFragment();
+ movieListFragment = new MovieListFragment();
// Setup animations
if (Utils.isLollipopOrLater()) {
@@ -169,6 +171,7 @@ public class MoviesActivity extends BaseActivity
selectedMovieTitle = null;
setupActionBar(null);
}
+
super.onBackPressed();
}
diff --git a/app/src/main/java/org/xbmc/kore/ui/MusicListFragment.java b/app/src/main/java/org/xbmc/kore/ui/MusicListFragment.java
index c3dfb64..e392ed2 100644
--- a/app/src/main/java/org/xbmc/kore/ui/MusicListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/MusicListFragment.java
@@ -39,6 +39,8 @@ public class MusicListFragment extends Fragment {
private TabsAdapter tabsAdapter;
+ private int currentItem;
+
@InjectView(R.id.pager_tab_strip) PagerSlidingTabStrip pagerTabStrip;
@InjectView(R.id.pager) ViewPager viewPager;
@@ -56,6 +58,28 @@ public class MusicListFragment extends Fragment {
viewPager.setAdapter(tabsAdapter);
pagerTabStrip.setViewPager(viewPager);
+ currentItem = viewPager.getCurrentItem();
+
+ viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ AbstractCursorListFragment f =
+ ((AbstractCursorListFragment) tabsAdapter.getStoredFragment(currentItem));
+ if (f != null) {
+ f.saveSearchState();
+ }
+ currentItem = viewPager.getCurrentItem();
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ }
+ });
return root;
}
diff --git a/app/src/main/java/org/xbmc/kore/ui/MusicVideoListFragment.java b/app/src/main/java/org/xbmc/kore/ui/MusicVideoListFragment.java
index 5019ce9..40996cb 100644
--- a/app/src/main/java/org/xbmc/kore/ui/MusicVideoListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/MusicVideoListFragment.java
@@ -23,16 +23,10 @@ import android.database.Cursor;
import android.net.Uri;
import android.provider.BaseColumns;
import android.support.v4.content.CursorLoader;
-import android.support.v4.view.MenuItemCompat;
-import android.support.v7.widget.SearchView;
import android.text.TextUtils;
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.AdapterView;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;
@@ -64,16 +58,11 @@ public class MusicVideoListFragment extends AbstractCursorListFragment {
protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_MUSIC_VIDEOS; }
@Override
- protected AdapterView.OnItemClickListener createOnItemClickListener() {
- return new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- // Get the movie id from the tag
- ViewHolder tag = (ViewHolder)view.getTag();
- // Notify the activity
- listenerActivity.onMusicVideoSelected(tag);
- }
- };
+ protected void onListItemClicked(View view) {
+ // Get the movie id from the tag
+ ViewHolder tag = (ViewHolder)view.getTag();
+ // Notify the activity
+ listenerActivity.onMusicVideoSelected(tag);
}
@Override
@@ -106,6 +95,7 @@ public class MusicVideoListFragment extends AbstractCursorListFragment {
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnMusicVideoSelectedListener");
}
+ setSupportsSearch(true);
}
@Override
@@ -114,22 +104,6 @@ public class MusicVideoListFragment extends AbstractCursorListFragment {
listenerActivity = null;
}
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- if (!isAdded()) {
- // HACK: Fix crash reported on Play Store. Why does this is necessary is beyond me
- super.onCreateOptionsMenu(menu, inflater);
- return;
- }
-
- inflater.inflate(R.menu.media_search, menu);
- MenuItem searchItem = menu.findItem(R.id.action_search);
- SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
- searchView.setOnQueryTextListener(this);
- searchView.setQueryHint(getString(R.string.action_search_music_videos));
- super.onCreateOptionsMenu(menu, inflater);
- }
-
/**
* Videos list query parameters.
*/
diff --git a/app/src/main/java/org/xbmc/kore/ui/TVShowListFragment.java b/app/src/main/java/org/xbmc/kore/ui/TVShowListFragment.java
index bb863a7..fa8bffa 100644
--- a/app/src/main/java/org/xbmc/kore/ui/TVShowListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/TVShowListFragment.java
@@ -25,8 +25,6 @@ import android.net.Uri;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
import android.support.v4.content.CursorLoader;
-import android.support.v4.view.MenuItemCompat;
-import android.support.v7.widget.SearchView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -34,7 +32,6 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.AdapterView;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;
@@ -67,16 +64,11 @@ public class TVShowListFragment extends AbstractCursorListFragment {
protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_TVSHOWS; }
@Override
- protected AdapterView.OnItemClickListener createOnItemClickListener() {
- return new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- // Get the movie id from the tag
- ViewHolder tag = (ViewHolder) view.getTag();
- // Notify the activity
- listenerActivity.onTVShowSelected(tag);
- }
- };
+ protected void onListItemClicked(View view) {
+ // Get the movie id from the tag
+ ViewHolder tag = (ViewHolder) view.getTag();
+ // Notify the activity
+ listenerActivity.onTVShowSelected(tag);
}
@Override
@@ -138,6 +130,7 @@ public class TVShowListFragment extends AbstractCursorListFragment {
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnTVShowSelectedListener");
}
+ setSupportsSearch(true);
}
@Override
@@ -155,10 +148,6 @@ public class TVShowListFragment extends AbstractCursorListFragment {
}
inflater.inflate(R.menu.tvshow_list, menu);
- MenuItem searchItem = menu.findItem(R.id.action_search);
- SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
- searchView.setOnQueryTextListener(this);
- searchView.setQueryHint(getString(R.string.action_search_tvshows));
// Setup filters
MenuItem hideWatched = menu.findItem(R.id.action_hide_watched),
diff --git a/app/src/main/res/menu/movie_list.xml b/app/src/main/res/menu/movie_list.xml
index d731b96..1c99516 100644
--- a/app/src/main/res/menu/movie_list.xml
+++ b/app/src/main/res/menu/movie_list.xml
@@ -17,13 +17,6 @@