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 = FindViewById(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;
}
}
}
Creamos una nueva clase llamada "SearchViewExpandListener" implementado "IOnActionExpandListener" para poder expandir o contrar cuando se realiza una busqueda.
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












