protected virtual void SetupSearchMenuItem(IMenu menu) { if (SearchItemId != 0) { using (var searchMenuItem = menu.FindItem(SearchItemId)) using (var searchView = MenuItemCompat.GetActionView(searchMenuItem)) using (var searchViewJavaObj = searchView.JavaCast <Android.Support.V7.Widget.SearchView>()) { searchViewJavaObj.QueryHint = AndroidHelper.GetString(Resource.String.enterSearchCriteria); searchViewJavaObj.QueryTextSubmit += (s, e) => { _searchTextChanged?.Invoke(e.Query); e.Handled = true; }; var onSearchCollapsedListener = new OnActionExpandListener(); onSearchCollapsedListener.MenuItemCollaspe += (sender, e) => { _searchSearchviewCollapsed?.Invoke(); e.Handled = true; }; MenuItemCompat.SetOnActionExpandListener(searchMenuItem, onSearchCollapsedListener); } } }
protected virtual void SetupFilterMenuItem(IMenu menu) { if (FilterDataItemId != 0) { using (var filterMenuItem = menu.FindItem(FilterDataItemId)) using (var filterView = MenuItemCompat.GetActionView(filterMenuItem)) using (var filterViewJavaObj = filterView.JavaCast <Android.Support.V7.Widget.SearchView>()) { filterViewJavaObj.QueryHint = AndroidHelper.GetString(Resource.String.enterFilterCriteria); filterViewJavaObj.QueryTextChange += (s, e) => { _filterDataTextChanged?.Invoke(e.NewText); e.Handled = true; }; filterViewJavaObj.QueryTextSubmit += (s, e) => { _filterDataTextChanged?.Invoke(e.Query); e.Handled = true; }; var onCollapseListener = new OnActionExpandListener(); onCollapseListener.MenuItemCollaspe += (sender, e) => { _filterSearchviewCollapsed?.Invoke(); e.Handled = true; }; MenuItemCompat.SetOnActionExpandListener(filterMenuItem, onCollapseListener); if (!string.IsNullOrWhiteSpace(CurrentFilter)) { var previousFilter = CurrentFilter; //For some reason these to invoke QueryTextChanged // the secodn time it is called, the CurrentFilter is set to empty filterMenuItem.ExpandActionView(); CurrentFilter = previousFilter; filterViewJavaObj.SetQuery(CurrentFilter, false); CurrentFilter = previousFilter; } } } }
//@TargetApi(14) public IMenuItem setOnActionExpandListener(OnActionExpandListener onActionExpandListener) { // Noop return this; }