lunes, 1 de septiembre de 2014

Simple SearchView con Xamarin.Android

Hola buen día,

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

jueves, 3 de abril de 2014

Consumir Rest Service con RestSharp y Xamarin.Android

El día de hoy les traigo un pequeño ejemplo de como consumir un Rest Service desde una aplicación Android creada en Xamarin Studio y utilizando el componente RestSharp para consumir los servicios de una manera mas sencilla.

Comenzamos creando un nuevo proyecto


Luego vamos a crear un Activity por cada metodo que vamos a utilizar en nuestro caso solo utilizaremos
los metodos de GET,POST,DELETE.


miércoles, 5 de marzo de 2014

Entity Framework y Web Service REST.

Como sabemos las aplicaciones de la windows store no pueden acceder a una base de datos directamente, esto se debe a que necesitan ser independientes para eliminar cualquier dependencia y así cualquier persona las puede descargar sin la necesidad de configurar un gestor de bases de datos directamente en su ordenador, por lo que normalmente se utiliza un Web Service  que se encarga de recuperar y actualizar datos.

El Entity Framework se encarga de implementar una abstracción de las tablas de la base de datos creando entidades de ellas, esto ayuda al desarrollador a reducir la cantidad de código de manera considerable.

Comenzaremos con nuestro ejemplo donde primero vamos a acceder a SQL Server utilizando el Server Name "(localdb)\v11.0" este es el string de conexión que identifica la versión de SQL Server que viene instalado con Visual Studio.


Ahora continuaremos con realizar nuestra base de datos que utilizaremos en el ejemplo.


miércoles, 26 de febrero de 2014

Comunicacion Arduino y Windows 8.1 Mediante Bluetooth

Este es un pequeño ejemplo de comunicación de arduino con una aplicación windows 8.1 a través del bluetooth donde manipularemos un led y servomotor enviando datos al arduino para que realice el evento requerido y recibiendo un mensaje en la aplicación del evento que se esta realizando en el arduino.

Software y materiales utilizados

Visual Studio 2013.
Visual Micro.
Arduino Leonardo.
Bluetooth shield for arduino.
Micro Servo 9g SG90.
Led.

A continuación mostrare una captura de pantalla de la aplicación, y daré una breve explicación de los elementos que se agregaron y su funcionamiento.

*Botón Buscar: para realizar la busqueda del dispositivo bleutooth.
*Botón Cancelar: para cancelar la conexión antes de que se conecte con el dispositivo.
*Botón Desconectar: para desconectar la conexión con el dispositivo.
*TextBlock Excepciones: para mostrar cualquier problema que halla durante la conexión.
*Boton Led: donde encenderá y apagara el led.
*TextBlock Estado Led; donde mostrara el estado del led si esta encendido o apagado.
*Boton Motor: para mover el servo.
*TextBlock  Estado Motor: mostrara el estado del motor hacia donde esta girando



Aqui  dejo como va conectado el circuito utilizado.