El widget Vista de búsqueda se utiliza para proporcionar una interfaz de búsqueda al usuario para que el usuario pueda ingresar su consulta de búsqueda y enviar una solicitud al proveedor de búsqueda y obtener una lista de sugerencias o resultados de consulta.
Sintaxis de clase:
public class SearchView extends LinearLayout implements CollapsibleActionView
Jerarquía de clases:
java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.LinearLayout ↳ android.widget.SearchView
Ejemplo para demostrar SearchView:
En este artículo, creará una aplicación de búsqueda básica con vista de búsqueda y vista de lista. El usuario escribirá la consulta de búsqueda en la vista de búsqueda que está presente en la barra de acción. Aquí se explican los pasos:
- Paso 1: actividad_principal.xml
Consiste en un diseño relativo con ListView en el que se buscarán los datos. Aquí está el código completo para activity_main.xml:
actividad_principal.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<!--Relative Layout-->
<
RelativeLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:id
=
"@+id/relativelayout"
>
<!--List View from which data is to be searched-->
<
ListView
android:id
=
"@+id/listView"
android:layout_width
=
"match_parent"
android:layout_height
=
"fill_parent"
/>
</
RelativeLayout
>
- Paso 2: menú.xml
Cree menu.xml y agregue la vista de búsqueda como elemento de menú a la barra de acción con el título «Buscar» este archivo. Aquí está el código completo para el archivo menu.xml.
menú.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
menu
<!--Search view widget as item in menu-->
<
item
android:id
=
"@+id/search_bar"
android:title
=
"Search"
app:actionViewClass
=
"android.widget.SearchView"
app:showAsAction
=
"ifRoom|withText"
/>
</
menu
>
- Paso 3: MainActivity.java
El siguiente paso es configurar el código para la actividad principal. En este archivo java, los elementos se agregan a la Vista de lista manualmente y setOnQueryTextListener se adjunta a la Vista de búsqueda. El método onQueryTextSubmit() se anula en el que la vista de lista obtiene el filtro de acuerdo con la consulta de búsqueda ingresada por el usuario. Aquí está el código completo para MainActivity.java:MainActivity.java
package
com.geeksforgeeks.searchviewwidget;
import
android.support.v7.app.AppCompatActivity;
import
android.view.Menu;
import
android.view.MenuInflater;
import
android.view.MenuItem;
import
android.os.Bundle;
import
android.widget.ListView;
import
android.widget.ArrayAdapter;
import
android.widget.SearchView;
import
java.util.ArrayList;
public
class
MainActivity
extends
AppCompatActivity {
// List View object
ListView listView;
// Define array adapter for ListView
ArrayAdapter<String> adapter;
// Define array List for List View data
ArrayList<String> mylist;
@Override
protected
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialise ListView with id
listView = findViewById(R.id.listView);
// Add items to Array List
mylist =
new
ArrayList<>();
mylist.add(
"C"
);
mylist.add(
"C++"
);
mylist.add(
"C#"
);
mylist.add(
"Java"
);
mylist.add(
"Advanced java"
);
mylist.add(
"Interview prep with c++"
);
mylist.add(
"Interview prep with java"
);
mylist.add(
"data structures with c"
);
mylist.add(
"data structures with java"
);
// Set adapter to ListView
adapter
=
new
ArrayAdapter<String>(
this
,
android.R.layout.simple_list_item_1,
mylist);
listView.setAdapter(adapter);
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu)
{
// Inflate menu with items using MenuInflator
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
// Initialise menu item search bar
// with id and take its object
MenuItem searchViewItem
= menu.findItem(R.id.search_bar);
SearchView searchView
= MenuItemCompat
.getActionView(searchViewItem);
// attach setOnQueryTextListener
// to search view defined above
searchView.setOnQueryTextListener(
new
SearchView.OnQueryTextListener() {
// Override onQueryTextSubmit method
// which is call
// when submitquery is searched
@Override
public
boolean
onQueryTextSubmit(String query)
{
// If the list contains the search query
// than filter the adapter
// using the filter method
// with the query as its argument
if
(list.contains(query)) {
adapter.getFilter().filter(query);
}
else
{
// Search query not found in List View
Toast
.makeText(MainActivity.
this
,
"Not found"
,
Toast.LENGTH_LONG)
.show();
}
return
false
;
}
// This method is overridden to filter
// the adapter according to a search query
// when the user is typing search
@Override
public
boolean
onQueryTextChange(String newText)
{
adapter.getFilter().filter(newText);
return
false
;
}
});
return
super
.onCreateOptionsMenu(menu);
}
}
Producción:
- Actividad principal con barra de búsqueda y lista
- Resultados de la búsqueda según la consulta de búsqueda
- Resultados de la búsqueda
Publicación traducida automáticamente
Artículo escrito por Rishabh007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA