Dia 06 - Construindo um aplicativo com Xamarin.Forms, Models e PCL

Olá pessoal, tudo bem?

Dando continuidade a nossa série de artigos, chegou a hora de começarmos a construir nosso aplicativo, ou melhor, o aplicativo do Monkey Nights 🐒

Este artigo faz parte da série 60 dias com Xamarin, se você perdeu alguma publicação pode acompanhar pelo índice disponível aqui.

A ideia é que o aplicativo do Monkey Nights, permita que qualquer pessoa acompanhe o conteúdo disponibilizado pela comunidade, dividido em Artigos, Webcats e Publicações será possível navegar entre o conteúdo e pesquisar por termos específicos. Para isso iremos construir inicialmente 6 Views:

  • Início ou Home (que vamos chamar Main);
  • Lista de Webcasts;
  • Lista de Artigos;
  • Lista de Publicações;
  • Visualizador de Conteúdo;
  • Informações sobre o Aplicativo;

Criando a infraestrutura do nosso projeto.

Se você acompanhou o dia 05, sabe que já criamos a nossa Solution no Visual Studio, iremos partir dela para dar sequência ao projeto.

Criando os Models

Analisando o layout do aplicativo conseguimos mapear os Models que iremos ter que criar, serão ao menos dois tipos de objetos, Content, que vai servir para Artigos/Publicações e Webcasts que vai herdar de Content, pois, possui algumas (ou uma) propriedades distintas (número de Views).

Antes de criar os Models temos que entender onde eles irão "ficar" na nossa Solution, se você prestou atenção nos dias anteriores, sabe que utilizamos um camada normalmente chamada de Core para facilitar o compartilhamento de código entre as plataformas (no nosso caso iOS e Android), e com isso implementar serviços ou lógica que não depende de plataforma especifica, portanto, como nossos Models não são específicos para cada plataforma, iremos incluí-los no Core.

Compartilhamento de código e PCL

Bom, existem duas formas de se compartilhar código entre plataformas, no nosso aplicativo iremos utilizar um tipo específico de projeto de Class Library e com isso permitir o compartilhamento de código, uma Portable Class Library, que normalmente chamamos de PCL.

A segunda forma de compartilhamento de código é utilizar um Shared Project, eu não vou me aprofundar no comparativo entre os dois, mas se você quiser entender as diferenças a fundo, quando e como utilizar, sugiro que você assista a este webcast do Monkey Nights, onde detalhamos e discutimos tudo sobre PCL vs Shared Projetcs

Para que você entenda melhor (vai soar repetitivo), uma PCL, pode ser consumida em múltiplos tipos de projeto, seja Windows Phone, ASP.Net, Android e iOS (com Xamarin), e isso é feito de acordo com o seu profile.

O Profile de uma PCL é definido durante a sua criação onde escolhemos quais plataforma target ela vai suportar, e com isso determinamos quais bibliotecas do .NET estarão disponíveis para utilizarmos em nosso projeto, é legal lembrar que a PCL é baseada no mínimo denominador comum. Para entender um pouco melhor, olhe a tabela abaixo:

Baseado nessa tabela, como exemplo, se eu quiser utilizar o tipo IQueryable, em um projeto com target Windows Phone 7.5 poderei utilizar o framework 4 ou superior, porem não poderei compartilhar a mesma PCL com um projeto para Xbox 360.

Lembre-se que sempre que falamos de Xamarin, estamos falando de compartilhamento de código, por isso é importante entendermos pelo menos o básico de como funciona uma PCL e com isso manter o máximo de código nela, e aumentar o coeficiente de código compartilhado sempre respeitando as características de cada plataforma target.

Para saber qual profile PCL você está usando, clique com o botão direito no seu projeto (Portable), escolha Properties e na Guia Library no grupo Targeting você vai ver quais são os targets suportados pela sua Class Library.

Se você quiser ir a fundo para entender mais sobre PCL, sugiro ler esta página na documentação da Xamarin.

Criando nossos Models

Abra o projeto no Visual Studio (ou Xamarin Studio), restaure os pacotes clicando com o botão direito na sua Solution e escolhendo a opção Restore Nuget Packages.

Com isso feito, no projeto MonkeyApp.Core, clique com o botão direito, escolha a opção Add, depois New Folder, renomeie o novo diretório para Models.

Agora criaremos a nossa primeira classe que vai se chamar BaseModel, clique com o botão direito no diretório Models, selecione a opção Add e em seguida Class, digite o nome do arquivo de classe, BaseModel.cs

Espera! Você falou que iria criar só duas classes? Sim, falei! Acontece que eu sou preguiçoso (penso que todo programador deveria ser no bom sentido), e como todo Model tem um Id, vou abstrair essa implementação.

Agora iremos criar o Model chamado Content (da mesma forma que criamos o BaseModel, é só repetir os passos) e logo em seguida a classe Webcast (também da mesma forma)

Ao final você deve ter três arquivos separados, com o conteúdo:

Ao final você deve ter algo como a imagem abaixo.

Por hoje é isso! Muito pouco? Penso que se for adiante em uma só publicação o texto vai ficar muito longo e ninguém vai ler. Se você pensa o contrario e acha que podemos nós alongar mais deixe a sua opinião nos comentários :)

Se você ficou perdido em alguma parte, o código fonte está disponível aqui.

No dia 07 iremos criar a nossa camada de serviços :)

Forte Abraço!


Como encontrar o conteúdo e acompanhar as postagens?

Você pode fazer duas coisas:

William S. Rodriguez

Microsoft & Xamarin MVP, C# mobile developer, community enthusiast & #Xamarin crusader.

Curitiba, PR, Brasil http://williamsrz.com.br

Subscribe to C#, Xamarin, Mobile & Cloud addicted

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!