Más información

miércoles, 1 de julio de 2015

Etiquetas: , , , , , , , , ,

Implementación de buscador Android Nativo

Activity android android developer Android nativo android studio Buscador Android desarrollo programación tutorial vídeo tutorial Android

He aquí un tutorial en el cual aprenderás la forma mas fácil de implementar el buscador de Android. Como sabemos la búsqueda es una de las funcionalidades más típicas en una aplicación. Por ello, la necesidad de implementar la búsqueda en la ActionBar es algo con lo que vas a tener que enfrentarte tarde o temprano si quieres adaptarte a las guías de diseño de Android.
Para ello crea un nuevo proyecto en Android con el último SDK (necesita ser superior a la 3.0) llamado ejemploBuscador, y elige crear una Activity en blanco. Necesitaremos un botón de búsqueda, así que si no te lo ha creado automáticamente, crea un nuevo archivo XML de tipo menú, y llámalo por ejemplo buscador.xml. Crea un item que se muestre siempre con el icono de la búsqueda y dale un título. También le añadiremos la clase de la que tiene que tomar la vista, que será un objeto de la clase SearchView, quedando así:




    



les dejo la imagen del buscador para que la puedan implementar en le proyecto

En el XML activity_main.xml creamos un TextView con el id textoBuscado quedando así:


   

    

   

Posteriormente tendrás que implementar los metodos de OnQueryTextListener, OnActionExpandListener. Estos son los cuatro métodos que te pedirá completar. Son los eventos que se lanzan al escribir y al pulsar en buscar. Lo que hago es mostrar un Toast, estos métodos los colocamos en la clase donde vamos a utilizar el buscador en este caso es MainActivity.java


    @Override
    public boolean onMenuItemActionExpand(MenuItem item) {
        Toast.makeText(getApplicationContext(), "Buscador activado", Toast.LENGTH_SHORT).show();
        return true;
    }

    @Override
    public boolean onMenuItemActionCollapse(MenuItem item) {
        Toast.makeText(getApplicationContext(), "Buscador desactivado", Toast.LENGTH_SHORT).show();
        return true;
    }

    @Override
    public boolean onQueryTextSubmit(String s) {
        textoBuscado.setText("Texto buscado\n\n" + s);
        return false;
    }

    @Override
    public boolean onQueryTextChange(String s) {
        textoBuscado.setText("Escribiendo texto buscado...\n\n" + s);
        return false;
    }

Para utilizar los métodos en el MainActivity.java hay que realizar el implements en la clase de la siguiente manera:
    public class MainActivity extends ActionBarActivity implements OnQueryTextListener, OnActionExpandListener

Lo siguiente que tenemos que hacer es instancia el TextView en la clase de la siguiente manera:
    private TextView textoBuscado;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textoBuscado = (TextView) findViewById(R.id.textoBuscado);
    }

En el método onCreateOptionsMenu lo modificamos quedando así:
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.buscador, menu);

        MenuItem searchItem = menu.findItem(R.id.menu_buscador);

        SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        searchView.setOnQueryTextListener(this);

        MenuItemCompat.setOnActionExpandListener(searchItem, this);

        return super.onCreateOptionsMenu(menu);

    }
    

Agrego la clase MainActivity.java completa con todos los métodos ya listos.
package android.ejemplo.com.ejemplobuscador;

import android.os.Bundle;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.view.MenuItemCompat.OnActionExpandListener;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.SearchView.OnQueryTextListener;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity implements OnQueryTextListener, OnActionExpandListener {

    private TextView textoBuscado;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textoBuscado = (TextView) findViewById(R.id.textoBuscado);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.buscador, menu);

        MenuItem searchItem = menu.findItem(R.id.menu_buscador);

        SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        searchView.setOnQueryTextListener(this);

        MenuItemCompat.setOnActionExpandListener(searchItem, this);

        return super.onCreateOptionsMenu(menu);

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public boolean onMenuItemActionExpand(MenuItem item) {
        Toast.makeText(getApplicationContext(), "Buscador activado", Toast.LENGTH_SHORT).show();
        return true;
    }

    @Override
    public boolean onMenuItemActionCollapse(MenuItem item) {
        Toast.makeText(getApplicationContext(), "Buscador desactivado", Toast.LENGTH_SHORT).show();
        return true;
    }

    @Override
    public boolean onQueryTextSubmit(String s) {
        textoBuscado.setText("Texto buscado\n\n" + s);
        return false;
    }

    @Override
    public boolean onQueryTextChange(String s) {
        textoBuscado.setText("Escribiendo texto buscado...\n\n" + s);
        return false;
    }
}


Espero les funcione y lo puedan implementar en todos sus proyectos. recuerden que pueden comentar si quieren extender este tutorial un poco más.

10 comentarios:

Publicar un comentario

Gracias por compartir tus comentarios con nosotros, si el comentario requiere de alguna respuesta por parte de nosotros, trataremos de responderte lo mas pronto posible.

 

Video tutoriales:

  • Video tutorial lista con imagenes y filtro android nativo
  • Video tutorial Como conectar MySQL con Android android nativo
  • Video tutorial Slider en android nativo
  • Video tutorial Implementación de buscador android nativo
  • Video tutorial Google Map en Android nativo
  • Video tutorial Transiciones entre Activities Android nativo
  • Video tutorial Lista con imágenes Android nativo (ListView)
  • Video tutorial Calificar Aplicación en Android nativo
  • Video tutorial Html5 en proyecto de Android nativo
  • Video tutorial Hacer un menú lateral nativo con Android nativo
  • Copyright © Hablemos de Android™ is a registered trademark.
    Designed by Templateism. Hosted on Blogger Platform.