El día de hoy les traigo un ejemplo de como crear un SearchView para buscar items dentro de un ListView.
Primero vamos a crear una nuevo proyecto del tipo "Android Application".
Despues de crear nuestro proyecto vamos a la carpeta de componentes donde añadiremos el componente de "Android Support Library v7 AppCompat"
Ahora vamos a comenzar una carpeta llamada Menu dentro de la carpeta Resources, y dentro de la carpeta Menu creamos un archivo llamado main.xml con el siguiente codigo.
Ahora vamos con nuestro layout principal que es el que muestra nuestro Search Bar y el ListView con los items donde realizaremos la busqueda.
Después vamos a nuestro MainActivity.cs, primero cambiamos el tipo de la clase de "Activity" a "ActionBarActivity".
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 SearchBar { [Activity(Label = "SearchView Ejemplo", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/Theme.AppCompat.Light")] public class SearchViewActivity : ActionBarActivity { private Android.Support.V7.Widget.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 Names = new[] { "Ricardo Romo Gonzalez","Alejandro Ruiz Varela","Christian Salvador Arenas", "Armando Balleza","Jorge Vazquez","Enrique Torres","Angel Alberto Mejia","Juan Manuel Perez", "Ruben Perez","Pedro Navajas","Jose Alfredo Jimenez","Antonio Aguilar" }; _listView = FindViewByIdCreamos una nueva clase llamada "SearchViewExpandListener" implementado "IOnActionExpandListener" para poder expandir o contrar cuando se realiza una busqueda.(Resource.Id.listView); _adapter = new ArrayAdapter (this, Android.Resource.Layout.SimpleListItem1, Names); _listView.Adapter = _adapter; } public override bool OnCreateOptionsMenu(IMenu menu) { MenuInflater.Inflate(Resource.Menu.main, menu); var item = menu.FindItem(Resource.Id.action_search); MenuItemCompat.SetOnActionExpandListener(item, new SearchViewExpandListener(_adapter)); var searchItem = MenuItemCompat.GetActionView(item); _searchView = searchItem.JavaCast (); _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; } } }
using System; using Android.Support.V4.View; using Android.Widget; using Android.Views; namespace SearchBar { 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; } } }Después de realizar los pasos anteriores corremos nuestro proyecto y deber aparecer como a continuación.
Esto fue un pequeño ejemplo de como utilizar el SearchView en Xamarin.Android espero que le ayude cualquier cosa deja un comentario.
Gracias.
Puedes descargar el proyecto desde mi github :SearchBar