Android SearchView con ejemplo

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 
        xmlns:tools="http://schemas.android.com/tools"
        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 
        xmlns:android="http://schemas.android.com/apk/res/android">   
      
        <!--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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *