Trabalhando o SQLite no Xamarin

Conheça o Xamarin Studio e saiba como utilizar o Xamarin e alguns de seus comandos. Veja um exemplo prático de utilização com SQLite. No exemplo você verá como criar o layout da aplicação e muito mais. Bons estudos!

Quando trabalhamos com desenvolvimento de sistemas, independente de sua plataforma ou linguagem, sempre nos deparamos com a necessidade de ter que armazenar essas informações em uma base de dados, consultar, editar e apagar.

Este artigo tem o intuito de ajudar programadores iniciantes na plataforma Xamarin Studio a criarem suas aplicações móveis possibilitando o armazenamento de suas informações em uma banco de dados SQLite.

O que é o Xamarin Studio

É um IDE autônomo para desenvolvimento de aplicativos móveis que permite o desenvolvimento de aplicações multi-plataforma utilizando a linguagem C#.

O que é o SQLite

SQLite é um mecanismo de banco de dados, compatível com ACID. Ao contrário dos sistemas cliente-servidor, SQLite está ligada à aplicação móvel, tornando-se parte dela. Cada operação é executada dentro do aplicativo móvel através de chamadas e os métodos fornecidos pela biblioteca SQLite são escritos em C e tem um tamanho relativamente pequeno.

Confira os cursos mobile da DevMedia:

Iniciando o Projeto

Se você não possui o Xamarin Studio, pode baixá-lo no Site do Xamarin.

Após a instalação (que é bem simples, abra o programa e escolha a opção Abrir. Clique em Arquivo -> Novo -> Soluções e escolha a opção Android Application. Defina um nome para seu projeto e clique em OK, conforme mostra a Figura 1.

Figura 1. Criando novo projeto

Criar Classe Database

Com o nosso projeto já criado, agora iremos criar nossa primeira classe, a qual chamaremos de "Database". Em seguida, clique com botão direito do mouse sobre o projeto Conexao -> Adicionar -> Novo Arquivo. Selecione a opção Android Class e defina um nome. Ao final, clique em New. A tela desse passo está presente na Figura 2.

Figura 2. Criando nova classe

Essa classe permite a comunicação da aplicação com o banco de dados de tal maneira que possamos criar o banco, as tabelas, as colunas, efetuar operações de inserção, edição, exclusão e consulta de dados tudo a partir dela. Na Listagem 1 temos o código da classe com seus comentários para que você possa entender melhor.

Saiba mais Confira Guia Completo de Xamarin
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using Android.Database.Sqlite; using System.IO; namespace Conexao { class Database { //objeto para manipulação do banco de dados SQLiteDatabase private SQLiteDatabase sqldb; //String para manipulação da consulta private string sqldb_query; //String para manipulação Mensagem private string sqldb_mensagem; //Bool para verificar a disponibilidade do banco de dados private bool sqldb_dispoTalhao; //Inicializa uma nova instância de classe de banco de dados public Database() { sqldb_mensagem = ""; sqldb_dispoTalhao = false; } //Um construtor argumento, inicializa uma nova instância da classe de banco de dados com o parâmetro nome do banco de dados public Database(string sqldb_nome) { try { sqldb_mensagem = ""; sqldb_dispoTalhao = false; CriarDatabase(sqldb_nome); } catch (SQLiteException ex) { sqldb_mensagem = ex.Message; } } //Obtém ou define o valor, dependendo da disponibilidade do banco de dados public bool DatabaseDispoTalhao { get{ return sqldb_dispoTalhao; } set{ sqldb_dispoTalhao = value; } } //Obtém ou define o valor para o tratamento de mensagens public string Mensagem { get{ return sqldb_mensagem; } set{ sqldb_mensagem = value; } } //Cria um novo banco de dados cujo nome é dado pelo parâmetro public void CriarDatabase(string sqldb_nome) { try { sqldb_mensagem = ""; string sqldb_location = System.Environment .GetFolderPath(System.Environment.SpecialFolder.Personal); string sqldb_path = Path.Combine(sqldb_location, sqldb_nome); bool sqldb_exists = File.Exists(sqldb_path); if(!sqldb_exists) { sqldb = SQLiteDatabase.OpenOrCreateDatabase(sqldb_path,null); sqldb_query = "CREATE TABLE IF NOT EXISTS Registros (_id INTEGER PRIMARY KEY AUTOINCREMENT, Produtor VARCHAR, Safra VARCHAR, Propriedade VARCHAR, Plano VARCHAR, Avaliador VARCHAR, Praga VARCHAR, Descricao VARCHAR, Talhao VARCHAR);"; sqldb.ExecSQL(sqldb_query); sqldb_mensagem = "Banco de dados '" + sqldb_nome + "' criado com sucesso!"; } else { sqldb = SQLiteDatabase.OpenDatabase(sqldb_path, null, DatabaseOpenFlags.OpenReadwrite); sqldb_mensagem = "Banco de dados '"+ sqldb_nome + "' carregado com sucesso!"; } sqldb_dispoTalhao=true; } catch(SQLiteException ex) { sqldb_mensagem = ex.Message; } } //Adiciona um novo registro com os parâmetros dados public void AddRegistro(string sProdutor, string sSafra, string sPropriedade,string sPlano,string sAvaliador,string sPraga, string sDescricao,string sTalhao) { try { sqldb_query = "INSERT INTO Registros (Produtor,Safra,Propriedade,Plano,Avaliador,Praga,Descricao,Talhao) VALUES ('" + sProdutor + "','" + sSafra + "','" + sPropriedade + "','" + sPlano + "','" + sAvaliador + "','" + sPraga + "','" + sDescricao + "','" + sTalhao + "');"; sqldb.ExecSQL(sqldb_query); sqldb_mensagem = "Registro salvo com sucesso!"; } catch(SQLiteException ex) { sqldb_mensagem = ex.Message; } } //Atualiza um registro existente com os parâmetros dados, dependendo do parâmetro id public void AlterarRegistro(int iId, string sProdutor, string sSafra, string sPropriedade,string sPlano,string sAvaliador,string sPraga, string sDescricao, string sTalhao) { try { sqldb_query="UPDATE Registros SET Produtor ='" + sProdutor + "', Safra ='" + sSafra + "', Propriedade ='" + sPropriedade + "', Plano ='" + sPlano + "', Avaliador ='" + sAvaliador + "', Praga ='" + sPraga + "', Descricao ='" + sDescricao + "', Talhao ='" + sTalhao + "' WHERE _id ='" + iId + "';"; sqldb.ExecSQL(sqldb_query); sqldb_mensagem = "Registro (" + iId + ") alterado com sucesso!"; } catch(SQLiteException ex) { sqldb_mensagem = ex.Message; } } //Exclui o registro associado ao parâmetro id public void DeletarRegistro(int iId) { try { sqldb_query = "DELETE FROM Registros WHERE _id ='" + iId + "';"; sqldb.ExecSQL(sqldb_query); sqldb_mensagem = "Registro " + iId + " deletado com sucesso!"; } catch(SQLiteException ex) { sqldb_mensagem = ex.Message; } } //Procura um registro e retorna um cursor Android.Database.ICursor //Mostra todos os registros da tabela public Android.Database.ICursor GetRecordCursor() { Android.Database.ICursor sqldb_cursor = null; try { sqldb_query = "SELECT*FROM Registros;"; sqldb_cursor = sqldb.RawQuery(sqldb_query, null); if(!(sqldb_cursor != null)) { sqldb_mensagem = "Registro não encontrado!"; } } catch(SQLiteException ex) { sqldb_mensagem = ex.Message; } return sqldb_cursor; } //Procura um registro e retorna um cursor Android.Database.ICursor //Mostra os registros de acordo com critérios de pesquisa public Android.Database.ICursor GetRecordCursor(string sColumn, string sValue) { Android.Database.ICursor sqldb_cursor = null; try { sqldb_query = "SELECT*FROM Registros WHERE " + sColumn + " LIKE '" + sValue + "%';"; sqldb_cursor = sqldb.RawQuery(sqldb_query, null); if(!(sqldb_cursor != null)) { sqldb_mensagem = "Registro não encontrado!"; } } catch(SQLiteException ex) { sqldb_mensagem = ex.Message; } return sqldb_cursor; } } }

Criando o Layout da Aplicação

Para criar o layout, dê um clique na pasta Resources para abrir as demais pastas. Em seguida, clique com o botão direito do mouse sobre a pasta layout -> adicionar -> novo arquivo e selecione a opção Android Activity. Defina um nome e clique em New, conforme mestra a Figura 3.

Figura 3. Criando o layout

Precisamos criar um TextView para cada item que iremos utilizar em nosso banco de dados. Na Listagem 2 você confere todo o código do layout.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="Id" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/Id_linha" android:layout_weight="1" android:gravity="center" android:textSize="15dp" android:textColor="#ffffffff" android:text /> <TextView android:text="Praga" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/Praga_linha" android:layout_weight="1" android:textSize="15dp" android:textColor="#ffffffff" android:text /> <TextView android:text="Descricao" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/Descricao_linha" android:layout_weight="1" android:textSize="15dp" android:text android:textColor="#ffffffff" /> <TextView android:text="Proprietario" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/Proprietario_linha" android:layout_weight="1" android:textSize="15dp" android:text android:textColor="#ffffffff" android:gravity="center" /> <TextView android:text="Propriedade" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/Propriedade_linha" android:layout_weight="1" android:textSize="15dp" android:text android:textColor="#ffffffff" /> <TextView android:text="Talhao" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/Talhao_linha" android:layout_weight="1" android:textSize="15dp" android:text android:textColor="#ffffffff" android:gravity="center" /> </LinearLayout>
Listagem 2. Lista_Itens.axml

Para alterar o layout main, vamos dentro da Pasta Resource -> Layout -> Main.axml. Em seguida, clique duas vezes no Main.axml. Veja o layout principal na Figura 4.

Figura 4. Layout Principal

Essa será nossa pagina principal onde teremos a maior parte das funcionalidades do sistema.

Na Listagem 3 temos o código do layout.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ff121c11"> <LinearLayout android:orientation="horizontal" android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:background="#ff636718" android:paddingTop="5dp" android:paddingBottom="5dp"> <ImageView android:src="@drawable/green_wormhole" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView1" android:paddingLeft="10dp" /> <TextView android:text="Catalogar Ocorrências" android:textColor="#ffffffff" android:textSize="25dp" android:gravity="left" android:id="@+id/TituloLista" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text android:paddingLeft="10dp" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:minWidth="25px" android:minHeight="25px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ff1e2e1d" android:paddingTop="5dp" android:paddingBottom="5dp" android:id="@+id/linearLayout7"> <TextView android:text="Produtor" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:textSize="20dp" android:text android:textColor="#ffffffff" android:id="@+id/textView5" /> <TextView android:text="Safra" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:textSize="20dp" android:textColor="#ffffffff" android:text android:id="@+id/textView6" /> <TextView android:text="Propriedade" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:textSize="20dp" android:text android:textColor="#ffffffff" android:id="@+id/textView7" /> <TextView android:text="Plano de Plantio" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:textSize="20dp" android:text android:textColor="#ffffffff" android:id="@+id/textView8" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:minWidth="25px" android:minHeight="25px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ff1e2e1d" android:id="@+id/linearLayout6"> <EditText android:id="@+id/txtProdutor" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <EditText android:id="@+id/txtSafra" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <EditText android:id="@+id/txtPropriedade" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <EditText android:id="@+id/txtPlano" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:minWidth="25px" android:minHeight="25px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ff1e2e1d" android:paddingTop="5dp" android:paddingBottom="5dp"> <TextView android:text="Avaliador" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:textSize="20dp" android:text android:textColor="#ffffffff" /> <TextView android:text="Tipo de Praga" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:textSize="20dp" android:textColor="#ffffffff" android:text /> <TextView android:text="Descrição" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:textSize="20dp" android:text android:textColor="#ffffffff" /> <TextView android:text="Talhão" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:textSize="20dp" android:text android:textColor="#ffffffff" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:minWidth="25px" android:minHeight="25px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ff1e2e1d" android:paddingBottom="20dp"> <EditText android:id="@+id/txtAvaliador" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <EditText android:id="@+id/txtPraga" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <EditText android:id="@+id/txtDescricao" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <EditText android:id="@+id/txtTalhao" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> <TextView android:text="msg" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/shMsg" android:background="#ff304a2e" android:textColor="#ffa1a728" android:text android:textSize="20dp" android:gravity="center" android:paddingTop="10dp" android:paddingBottom="10dp" /> <LinearLayout android:orientation="horizontal" android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="10dp" android:background="#ff304a2e" android:gravity="center" android:id="@+id/linearLayout1" android:paddingBottom="20dp" android:paddingTop="20dp"> <ImageButton android:layout_width="169dp" android:paddingLeft="10dp" android:layout_height="42dp" android:background="@drawable/bug_add" android:id="@+id/imgAdd" android:layout_marginLeft="5dp" android:layout_marginRight="10dp" /> <ImageButton android:layout_width="169dp" android:paddingLeft="10dp" android:layout_height="42dp" android:background="@drawable/bug_edit" android:id="@+id/imgEditar" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" /> <ImageButton android:layout_width="169dp" android:paddingLeft="10dp" android:layout_height="42dp" android:background="@drawable/bug_delete" android:id="@+id/imgDeletar" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" /> <ImageButton android:layout_width="169dp" android:paddingLeft="10dp" android:layout_height="42dp" android:background="@drawable/bug_search" android:id="@+id/imgBuscar" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" /> <ImageButton android:layout_width="169dp" android:paddingLeft="10dp" android:layout_height="42dp" android:background="@drawable/bug_gps" android:id="@+id/imgGps" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout8" android:background="#ff304a2e" android:gravity="center" android:paddingTop="10dp" android:paddingBottom="10dp"> <TextView android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/latitude" android:textColor="#ffa1a728" android:textSize="20dp" android:text /> <TextView android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/longitude" android:paddingLeft="20dp" android:textColor="#ffa1a728" android:textSize="20dp" android:text /> <TextView android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/provedor" android:paddingLeft="20dp" android:textColor="#ffa1a728" android:textSize="20dp" android:text /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:background="#ff636718" android:paddingTop="5dp" android:paddingBottom="5dp"> <ImageView android:src="@drawable/green_yellow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView2" android:paddingLeft="10dp" /> <TextView android:text="Lista de Ocorrências" android:textColor="#ffffffff" android:textSize="25dp" android:gravity="left" android:id="@+id/TituloLista" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text android:paddingLeft="10dp" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:minWidth="25px" android:minHeight="25px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="10dp" android:background="#ff1e2e1d" android:gravity="center" android:paddingBottom="5dp" android:paddingTop="5dp"> <TextView android:text="Código:" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:textSize="20dp" android:layout_weight="1" android:gravity="left" android:id="@+id/id" /> <TextView android:text="Praga:" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:gravity="left" android:textSize="20dp" android:layout_weight="1" android:id="@+id/nome" /> <TextView android:text="Descrição:" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:layout_weight="1" android:gravity="left" android:textSize="20dp" android:id="@+id/sobrenome" /> <TextView android:text="Produtor:" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:layout_weight="1" android:textSize="20dp" android:gravity="left" android:id="@+id/idade" /> <TextView android:text="Propriedade:" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:layout_weight="1" android:gravity="left" android:textSize="20dp" android:id="@+id/sobrenome" /> <TextView android:text="Talhão:" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:layout_weight="1" android:textSize="20dp" android:gravity="left" android:id="@+id/idade" /> </LinearLayout> <ListView android:minWidth="25px" android:minHeight="25px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="10dp" android:id="@+id/listItems" /> </LinearLayout>
Listagem 3. Main.axml

Para criar a Main Activity class, dê um duplo clique no arquivo MainActivity.cs. Na Main Activity iremos fazer com que todo o processo da classe se comunique com o layout, de forma que todos os processos e eventos funcionem como desejado. Os principais eventos serão adicionar, editar, apagar, pesquisar e pegar as coordenadas do GPS. Dentro da classe também iremos alimentar nosso ListView com os dados armazenados em nosso banco de dados.

Na Listagem 4 temos o código da Main Activity.

using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using Android.Locations; using Android.Util; namespace Conexao { [Activity (Label = "Controle de Pragas 1.0", MainLauncher = true)] public class MainActivity : Activity, ILocationListener { //Classe de banco de dados novo objeto Database sqldb; //Produtor, Safra, Propriedade, Plano, Avaliador, Praga, Descricao, Talhão EditText txtProdutor, txtSafra, txtPropriedade, txtPlano, txtAvaliador, txtPraga, txtDescricao, txtTalhao; //Mensagem objeto TextView para exibir dados TextView shMsg; //Adicionar, editar, apagar e pesquisar objetos ImageButton para tratamento eventos ImageButton imgAdd, imgEditar, imgDeletar, imgBuscar; //ListView objeto para exibir dados do banco de dados ListView listItems; //Add Gerenciador de Localização LocationManager locMgr; string tag = "MainActivity"; ImageButton btLocalizar; TextView latitude; TextView longitude; TextView provedor; //Inicia o evento para criar aplicativos protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); //Defina nosso layout principal como exibição padrão SetContentView (Resource.Layout.Main); //Inicializa novo objeto da classe de banco de dados sqldb = new Database("controle_db"); //Obtém objetos Gps SetContentView (Resource.Layout.Main); btLocalizar = FindViewById<ImageButton> (Resource.Id.imgGps); latitude = FindViewById<TextView> (Resource.Id.latitude); longitude = FindViewById<TextView> (Resource.Id.longitude); provedor = FindViewById<TextView> (Resource.Id.provedor); //Obtém casos ImageButton objeto imgAdd = FindViewById<ImageButton> (Resource.Id.imgAdd); imgDeletar = FindViewById<ImageButton> (Resource.Id.imgDeletar); imgEditar = FindViewById<ImageButton> (Resource.Id.imgEditar); imgBuscar = FindViewById<ImageButton> (Resource.Id.imgBuscar); //Obtém instâncias de objetos EditText txtProdutor = FindViewById<EditText> (Resource.Id.txtProdutor); txtSafra = FindViewById<EditText> (Resource.Id.txtSafra); txtPropriedade = FindViewById<EditText> (Resource.Id.txtPropriedade); txtPlano = FindViewById<EditText> (Resource.Id.txtPlano); txtAvaliador = FindViewById<EditText> (Resource.Id.txtAvaliador); txtPraga = FindViewById<EditText> (Resource.Id.txtPraga); txtDescricao = FindViewById<EditText> (Resource.Id.txtDescricao); txtTalhao = FindViewById<EditText> (Resource.Id.txtTalhao); //Obtém casos TextView objeto shMsg = FindViewById<TextView> (Resource.Id.shMsg); //Obtém instância ListView objeto listItems = FindViewById<ListView> (Resource.Id.listItems); //Define a propriedade mensagem classe de banco de dados a instância shMsg TextView shMsg.Text = sqldb.Mensagem; //Cria ImageButton evento click para imgAdd, ImgEdit, imgDelete e imgSearch imgAdd.Click += delegate { //Chama uma função addRecord para adicionar um novo registro sqldb.AddRegistro (txtProdutor.Text, txtSafra.Text, txtPropriedade.Text, txtPlano.Text, txtAvaliador.Text, txtPraga.Text, txtDescricao.Text,txtTalhao.Text); shMsg.Text = sqldb.Mensagem; txtProdutor.Text = txtSafra.Text = txtPropriedade.Text = txtPlano.Text = txtAvaliador.Text = txtPraga.Text = txtDescricao.Text = txtTalhao.Text = ""; GetCursorView(); }; imgEditar.Click += delegate { int iId = int.Parse(shMsg.Text); //Chama a função UpdateRecord para atualizar um registro existente sqldb.AlterarRegistro (iId, txtProdutor.Text, txtSafra.Text, txtPropriedade.Text, txtPlano.Text, txtAvaliador.Text, txtPraga.Text, txtDescricao.Text,txtTalhao.Text); shMsg.Text = sqldb.Mensagem; txtProdutor.Text = txtSafra.Text = txtPropriedade.Text = txtPlano.Text = txtAvaliador.Text = txtPraga.Text = txtDescricao.Text = txtTalhao.Text = ""; GetCursorView(); }; imgDeletar.Click += delegate { int iId = int.Parse(shMsg.Text); //Chama a função DeleteRecord para apagar o registro associado ao parâmetro id sqldb.DeletarRegistro (iId); shMsg.Text = sqldb.Mensagem; txtProdutor.Text = txtSafra.Text = txtPropriedade.Text = txtPlano.Text = txtAvaliador.Text = txtPraga.Text = txtDescricao.Text = txtTalhao.Text = ""; GetCursorView(); }; imgBuscar.Click += delegate { //Chama a função GetCursorView para pesquisar todos os registros ou registro único de acordo com critérios de pesquisa string sqldb_column = ""; if (txtProdutor.Text.Trim () != "") { sqldb_column = "Produtor"; GetCursorView (sqldb_column, txtProdutor.Text.Trim ()); } else if (txtPropriedade.Text.Trim () != "") { sqldb_column = "Propriedade"; GetCursorView (sqldb_column, txtPropriedade.Text.Trim ()); } else if (txtTalhao.Text.Trim () != "") { sqldb_column = "Talhao"; GetCursorView (sqldb_column, txtTalhao.Text.Trim ()); } else { GetCursorView (); sqldb_column = "Todos"; } shMsg.Text = "Buscar " + sqldb_column + "."; }; //Adicionar manipulador de eventos ItemClick a instância ListView listItems.ItemClick += new EventHandler<AdapterView.ItemClickEventArgs> (item_Clicked); } //Lançada quando um item de ListView é clicada void item_Clicked (object sender, AdapterView.ItemClickEventArgs e) { //Obtém instância do objeto TextView de Layout record_view TextView shId = e.View.FindViewById<TextView> (Resource.Id.Id_linha); TextView shPraga = e.View.FindViewById<TextView> (Resource.Id.Praga_linha); TextView shDescricao = e.View.FindViewById<TextView> ( Resource.Id.Descricao_linha); TextView shProdutor = e.View.FindViewById<TextView> ( Resource.Id.Proprietario_linha); TextView shPropriedade = e.View.FindViewById<TextView> ( Resource.Id.Propriedade_linha); TextView shTalhao = e.View.FindViewById<TextView> (Resource.Id.Talhao_linha); //Lê os valores e conjuntos de instâncias de objetos EditText txtPraga.Text = shPraga.Text; txtDescricao.Text = shDescricao.Text; txtProdutor.Text = shProdutor.Text; txtPropriedade.Text = shPropriedade.Text; txtTalhao.Text = shTalhao.Text; //Exibe mensagens para operações CRUD shMsg.Text = shId.Text; } //Obtém a exibição cursor para mostrar todos os registros void GetCursorView() { Android.Database.ICursor sqldb_cursor = sqldb.GetRecordCursor (); if (sqldb_cursor != null) { sqldb_cursor.MoveToFirst (); string[] from = new string[] {"_id","Praga","Descricao","Produtor","Propriedade","Talhao" }; int[] to = new int[] { Resource.Id.Id_linha, Resource.Id.Praga_linha, Resource.Id.Descricao_linha, Resource.Id.Proprietario_linha, Resource.Id.Propriedade_linha, Resource.Id.Talhao_linha }; //Cria um SimpleCursorAdapter para ListView objeto SimpleCursorAdapter sqldb_adapter = new SimpleCursorAdapter (this, Resource.Layout.Lista_Itens, sqldb_cursor, from, to); listItems.Adapter = sqldb_adapter; } else { shMsg.Text = sqldb.Mensagem; } } //Obtém a exibição cursor para mostrar registros de acordo com critérios de pesquisa void GetCursorView (string sqldb_column, string sqldb_value) { Android.Database.ICursor sqldb_cursor = sqldb.GetRecordCursor (sqldb_column, sqldb_value); if (sqldb_cursor != null) { sqldb_cursor.MoveToFirst (); string[] from = new string[] {"_id","Praga","Descricao","Produtor","Propriedade","Talhao" }; int[] to = new int[] { Resource.Id.Id_linha, Resource.Id.Praga_linha, Resource.Id.Descricao_linha, Resource.Id.Proprietario_linha, Resource.Id.Propriedade_linha, Resource.Id.Talhao_linha }; SimpleCursorAdapter sqldb_adapter = new SimpleCursorAdapter (this, Resource.Layout.Lista_Itens, sqldb_cursor, from, to); listItems.Adapter = sqldb_adapter; } else { shMsg.Text = sqldb.Mensagem; } } protected override void OnStart () { base.OnStart (); Log.Debug (tag, "OnStart Chamado"); } // OnResume é chamado toda vez que a atividade começa, então vamos colocar nossas RequestLocationUpdates // Código aqui, de modo que protected override void OnResume () { base.OnResume (); Log.Debug (tag, "OnResume Chamado"); // inicializar locação locMgr = GetSystemService (Context.LocationService) as LocationManager; btLocalizar.Click += delegate { //btLocalizar.Text = "GPS"; // Passar no provedor (GPS), // O mínimo de tempo entre as atualizações (em segundos), // A distância mínima que o usuário precisa mover-se para gerar uma atualização (em metros), // E um ILocationListener (lembre-se que esta classe impletents a interface ILocationListener) locMgr.RequestLocationUpdates (LocationManager.NetworkProvider, 2000, 1, this); }; } protected override void OnPause () { base.OnPause (); // Parar de enviar atualizações de localização quando o aplicativo vai para o fundo // Para aprender sobre a atualização do local em segundo plano, consulte o guia de backgrounding // Http://docs.xamarin.com/guides/cross-platform/application_ fundamentals/backgrounding/ // RemoveUpdates leva uma intenção pendente - aqui, nós passamos a atividade atual locMgr.RemoveUpdates (this); Log.Debug (tag, "A localização parou porque a aplicação está entrando no fundo"); } protected override void OnStop () { base.OnStop (); Log.Debug (tag, "OnStop Chamado"); } public void OnLocationChanged (Android.Locations.Location location) { Log.Debug (tag, "Localização mudou"); latitude.Text = "Latitude: " + location.Latitude.ToString(); longitude.Text = "Longitude: " + location.Longitude.ToString(); provedor.Text = "Provedor: " + location.Provider.ToString(); } public void OnProviderDisabled (string provider) { Log.Debug (tag, provider + " desabilitado pelo usuário"); } public void OnProviderEnabled (string provider) { Log.Debug (tag, provider + " habilitado pelo usuário"); } public void OnStatusChanged (string provider, Availability status, Bundle extras) { Log.Debug (tag, provider + " disponibilidade mudou para " + status.ToString()); } } }
Listagem 4. MainActivity.cs

Artigos relacionados