Android

28 out, 2016

Xamarin Android – Salvando dados com Shared Preferences – Parte 02

Publicidade

Neste artigo vou apresentar um exemplo prático de utilização de Shared Preferences para persistir dados em uma aplicação Xamarin Android.

Na primeira parte do artigo abordei os conceitos sobre Shared Preferences e agora vou mostrar um exemplo prático de como utilizar esse recurso.

No exemplo usado vamos ter duas Activities:

  1. MainActivity.cs – Exibe o arquivo de Layout (Main.axml) onde o usuário deverá informar o nome e o email e clicar no botão Enviar, onde iremos persistir os dados, e a seguir em Ver Registros;
  2. VisualizarContatos.cs – Exibe o ListView com os dados informados pelo usuário persistidos via Shared Preferences;

Agora ao trabalho…

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando o projeto no Visual Studio 2015 Community

Abra o VS 2015 Community e clique em New Project;

Selecione a linguagem Visual C# e o template Android -> Blank App(Android)

Informe o nome App.UsandoSharedPreferences e clique no botão OK;

Criando a classe Contato

No menu Project clique em Add Class e informe o nome Contato.cs.

A seguir inclua o código abaixo nesta classe :

public class Contato
 {
 public string Nome { get; set; }
 public string Email { get; set; }
 public Contato(string nome, string email)
 {
 Nome = nome;
 Email = email;
 }
 public override string ToString()
 {
 return Nome + " : " + Email;
 }
 }

Esta classe representa um contato que iremos persistir em nosso projeto.

Definindo o Layout da Activity Principal: o arquivo Main.axml

Vou começar definindo o layout da atividade principal no arquivo Main.axml na pasta Resources/layout.

Abra o arquivo Main.axml no modo Designer inclua os seguintes controles a partir da ToolBox :

  • TextView – id = lblNome, text= Informe seu Nome
  • EditText – id = txtNome
  • TextView – id = lblEmail , text= Informe o seu Email
  • EditText – id = txtEmail
  • Button – id = btnEnviar, Text=”Enviar”
  • Button – id =btnVisualizar , Text= “Ver Registros”

Abaixo vemos o leiaute no emulador do Xamarin exibindo a tela e abaixo o respectivo código XML gerado :

xamand_sharp21

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:background="#6a1e4f"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <TextView
 android:text="Informe seu Nome"
 android:textAppearance="?android:attr/textAppearanceMedium"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/lblNome" />
 <EditText
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/txtNome" />
 <TextView
 android:text="Informe o seu Email"
 android:textAppearance="?android:attr/textAppearanceMedium"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/lblEmail" />
 <EditText
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/txtEmail" />
 <Button
 android:text="Enviar"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/btnEnviar" />
 <Button
 android:text="Ver Registros"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/btnVisualizar" />
 </LinearLayout>

Agora podemos iniciar a implementação do código para persistir os dados usando Shared Preferences.

Abra o arquivo MainActivity.cs e inclua o código abaixo substituindo o código existente:

using Android.App;
 using Android.Content;
 using Android.OS;
 using Android.Widget;
 namespace App.UsandoSharedPreferences
 {
 [Activity(Label = "Cadastro", MainLauncher = true, Icon = "@drawable/icon")]
 public class MainActivity : Activity
 {
 protected override void OnCreate(Bundle bundle)
 {
 base.OnCreate(bundle);
 SetContentView(Resource.Layout.Main);
 Button btnEnviar = FindViewById<Button>(Resource.Id.btnEnviar);
 btnEnviar.Click += delegate
 {
 //obtem os dados informados pelo usuário e armazena em variáveis locais
 EditText txtNome = FindViewById<EditText>(Resource.Id.txtNome);
 string nome = txtNome.Text;
 EditText txtEmail = FindViewById<EditText>(Resource.Id.txtEmail);
 string email = txtEmail.Text;
 var localContatos = Application.Context.GetSharedPreferences("contatos", Android.Content.FileCreationMode.Private);
 var contatoEdit = localContatos.Edit();
 contatoEdit.PutString("Nome", nome);
 contatoEdit.PutString("Email", email);
 contatoEdit.Commit();
 //exibe um aviso e limpa os controles
 Toast.MakeText(this, "Dados inseridos", ToastLength.Short).Show();
 txtNome.Text = "";
 txtEmail.Text = "";
 };
 Button btnVisualizar = FindViewById<Button>(Resource.Id.btnVisualizar);
 btnVisualizar.Click += delegate
 {
 //chama a Activity - VisualizarContatos
 var intent = new Intent(this, typeof(VisualizarContatos));
 StartActivity(intent);
 };
 }
 }
 }

Neste código o destaque vai para as linhas que estão no evento Click do botão Enviar:

var localContatos = Application.Context.GetSharedPreferences("contatos", Android.Content.FileCreationMode.Private);
 var contatoEdit = localContatos.Edit();
 contatoEdit.PutString("Nome", nome);
 contatoEdit.PutString("Email", email);
 contatoEdit.Commit();

Neste código estamos criando um arquivo chamado ‘contatos’ usando o modo de acesso Private e a seguir invocamos o método Edit() para obter uma instância de SharedPreferences.

A seguir persistimos os dados usando o método PutString() e informando a chave e o valor a persistir.

Para salvar usamos o Commit().

Quando o usuário clicar no botão Ver Registros estamos iniciando a Activity VisualizarContatos que iremos criar a seguir.

Criando a Activity para exibir as informações persistidas no Shared Preferences

No menu Project clique em Add New Item;

Selecione o template Activity e informe o nome VisualizarContatos.cs

A seguir defina o código abaixo nesta Activity:

xamand_sharp22

using Android.App;
 using Android.OS;
 using Android.Widget;
 namespace App.UsandoSharedPreferences
 {
 [Activity(Label = "Contatos")]
 public class VisualizarContatos : ListActivity
 {
 protected override void OnCreate(Bundle savedInstanceState)
 {
 base.OnCreate(savedInstanceState);
 var localContatos = Application.Context.GetSharedPreferences("contatos", Android.Content.FileCreationMode.Private);
 string nome = localContatos.GetString("Nome", null);
 string email = localContatos.GetString("Email", null);
 Contato _contato = new Contato(nome, email);
 Contato[] listaContatos = { _contato };
 ListAdapter = new ArrayAdapter<Contato>(this, Android.Resource.Layout.SimpleListItem1, listaContatos);
 }
 }
 }

O destaque do código acima é a implementação azul onde obtemos os dados persistidos na Shared Preferences usando o método GetString() e informando a chave para recuperar o respectivo valor:

var localContatos = Application.Context.GetSharedPreferences("contatos", Android.Content.FileCreationMode.Private);
            string nome = localContatos.GetString("Nome", null);
            string email = localContatos.GetString("Email", null);
            Contato _contato = new Contato(nome, email);

A seguir criamos um array de Contato e exibimos no ListView via ListAdapter.

Nota: Para saber como usar o controle ListView com a classe ListActivity veja o artigo: Xamarin Android – ListView – Usando uma ListActivity (e nada mais…)

Executando o projeto iremos obter:

xamand_sharp23
A tela de layout Main sendo exibida onde o usuário informa o nome e o email
Ao clicar no botão Enviar os dados são limpos e um aviso é exibido ao usuário. Neste momento estamos persistindo as informações em Shared Preferences.
Ao clicar no botão Enviar os dados são limpos e um aviso é exibido ao usuário.
Neste momento estamos persistindo as informações em Shared Preferences.
Ao clicar no botão Ver Registros temos o ListView exibindo as informações persistidas em Shared Preferences
Ao clicar no botão Ver Registros temos o ListView exibindo as informações persistidas em Shared Preferences

Pegue o projeto completo aqui: App.UsandoSharedPreferences.zip (sem as referências)