Last active
March 15, 2023 19:30
-
-
Save Cheesebaron/9670295 to your computer and use it in GitHub Desktop.
Small sample showing how to use SearchView with the Support v7 ActionBar. See the tutorial here: http://youtu.be/4FvObC44bhM
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Add this to the OnCreateOptionsMenu, where item is = menu.FindItem(Resource.Id.action_search); | |
MenuItemCompat.SetOnActionExpandListener(item, new SearchViewExpandListener(_adapter)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:orientation="vertical" | |
android:layout_width="fill_parent" | |
android:layout_height="fill_parent"> | |
<ListView | |
android:id="@+id/listView" | |
android:layout_width="fill_parent" | |
android:layout_height="fill_parent" /> | |
</LinearLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<menu xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:app="http://schemas.android.com/apk/res-auto"> | |
<item android:id="@+id/action_search" | |
android:title="Search" | |
android:icon="@android:drawable/ic_menu_search" | |
app:showAsAction="always|collapseActionView" | |
app:actionViewClass="android.support.v7.widget.SearchView" /> | |
</menu> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Android.App; | |
using Android.Runtime; | |
using Android.Support.V4.View; | |
using Android.Support.V7.App; | |
using Android.Support.V7.Widget; | |
using Android.Views; | |
using Android.OS; | |
using Android.Widget; | |
namespace SearchViewSample | |
{ | |
[Activity(Label = "SearchView Sample", MainLauncher = true, Icon = "@drawable/icon", | |
Theme = "@style/Theme.AppCompat.Light")] | |
public class SearchViewActivity : ActionBarActivity | |
{ | |
private SearchView _searchView; | |
private ListView _listView; | |
private ArrayAdapter _adapter; | |
protected override void OnCreate(Bundle bundle) | |
{ | |
base.OnCreate(bundle); | |
// Set our view from the "main" layout resource | |
SetContentView(Resource.Layout.Main); | |
var products = new[] | |
{ | |
"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE", | |
"iPhone 4S", "Samsung Galaxy Note 800", | |
"Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro" | |
}; | |
_listView = FindViewById<ListView>(Resource.Id.listView); | |
_adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, products); | |
_listView.Adapter = _adapter; | |
} | |
public override bool OnCreateOptionsMenu(IMenu menu) | |
{ | |
MenuInflater.Inflate(Resource.Menu.main, menu); | |
var item = menu.FindItem(Resource.Id.action_search); | |
var searchItem = MenuItemCompat.GetActionView(item); | |
_searchView = searchItem.JavaCast<SearchView>(); | |
_searchView.QueryTextChange += (s, e) => _adapter.Filter.InvokeFilter(e.NewText); | |
_searchView.QueryTextSubmit += (s, e) => | |
{ | |
//TODO: Do something fancy when search button on keyboard is pressed | |
Toast.MakeText(this, "Searched for: " + e.Query, ToastLength.Short).Show(); | |
e.Handled = true; | |
}; | |
return true; | |
} | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class SearchViewExpandListener | |
: Java.Lang.Object, MenuItemCompat.IOnActionExpandListener | |
{ | |
private readonly IFilterable _adapter; | |
public SearchViewExpandListener(IFilterable adapter) | |
{ | |
_adapter = adapter; | |
} | |
public bool OnMenuItemActionCollapse(IMenuItem item) | |
{ | |
_adapter.Filter.InvokeFilter(""); | |
return true; | |
} | |
public bool OnMenuItemActionExpand(IMenuItem item) | |
{ | |
return true; | |
} | |
} |
Hi everyone,
var searchItem = MenuItemCompat.GetActionView(item);
alxays returns null for me, does any one have the same problem ?
how i can do it use _adapter = new FriendAdapter(this, Android.Resource.Layout.SimpleListItem1, products);
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@wgrand - Exception still appear even though you change to Android.Support.V7.Widget.SearchView...
To Solve the problem, I used
MenuItemCompat
instead ofJavaCast()
:SearchView searchView = (SearchView)MenuItemCompat.GetActionView(searchItem);