Xamarin Android -   Salvando dados com Shared Preferences - II


 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:

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 :

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

<?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 via para as linhas em azul 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:

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 destacada em azul onde obtemos os dados persistidos na Shared Preferences usando o método GetString() e informando a chave para recuperar o respectivo valor.

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 :

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 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)

Porque todo aquele que faz o mal odeia a luz, e não vem para a luz, para que as suas obras não sejam reprovadas.
Mas quem pratica a verdade vem para a luz, a fim de que as suas obras sejam manifestas, porque são feitas em Deus.

João 3:20,21

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti