sexta-feira, 5 de setembro de 2014

Android - Enviando Email Através de Intent.

Android - Enviando Email Através de Intent.


    Nesse artigo veja como enviar emails através de um Intent, primeiro criamos um Intent que vai receber como parâmetro um Intent.ACTION_SEND:


Intent email = new Intent(Intent.ACTION_SEND);

    Depois chamamos o método putExtra() do Intent, no nosso caso vamos precisar chamar o método 3 vezes, pois vamos passar o endereço do email para quem vamos enviar o e-mail, o assunto do e-mail e a mensagem a ser enviada.


email.putExtra(Intent.EXTRA_EMAIL, new String[]{"email@gmail.com"});

    No primeiro método passamos como parâmetro um Intent.EXTRA_EMAIL e um array de Strings que vai conter o endereço de email para quem vamos enviar o e-mail.


email.putExtra(Intent.EXTRA_SUBJECT, "Assunto do email");

    No segundo método passamos como parâmetro um Intent.EXTRA_SUBJECT e uma String que vai ser o assunto do email.


email.putExtra(Intent.EXTRA_TEXT, "Mensagem a ser enviada");

   No terceiro método passamos como parâmetro um Intent.EXTRA_TEXT e uma String que vai ser a mensagem a ser enviada.


email.setType("text/plain");

   Aqui configuramos o tipo do intent no nosso caso é "text/plain"


startActivity(Intent.createChooser(email, "Choose an Email client :"));

  Agora chamamos o método startActivity() para criarmos uma nova activity passando como parâmetro o nosso Intent e-mail e uma String que é o titulo do dialog que irá aparecer para que o usuário escolha o programa de e-mail para enviar o e-mail, o segundo parâmetro é opcional.

  Veja abaixo o código completo para enviar um e-mail através de um Intent, todos os passos citados acima se encontram no método sendEmail().

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        sendEmail();

    }
public void sendEmail(){

    Intent email = new Intent(Intent.ACTION_SEND);
    email.putExtra(Intent.EXTRA_EMAIL, new String[]{"email@gmail.com"});
    email.putExtra(Intent.EXTRA_SUBJECT, "Assunto do email");
    email.putExtra(Intent.EXTRA_TEXT, "Mensagem a ser enviada");
    email.setType("text/plain");
    startActivity(Intent.createChooser(email, "Choose an Email client :"));

}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

terça-feira, 26 de agosto de 2014

Python - For Loop

Python - For Loop


    For loop é um laço de repetição em que um trecho de código é repetido determinadas vezes, geralmente é usado quando precisamos que um código seja executado n vezes, por exemplo digamos que nós temos uma lista list = [1,2,3,4] e queremos multiplicar cada valor desta lista por 2 quantas vezes precisamos repetir o código que faz esta multiplicação? Se observarmos a lista possui 4 elementos, ou seja,  precisamos repetir 4 vezes, vejamos.



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#Criamos uma lista
list = [1,6,3,4]

#percorremos toda a lista
for numero in list:    
    #em cada iteração(repetição) a variavel numero vai ser um elemento da lista
    #na primeira iteração vai multiplicar o primeiro elemento da lista no caso 1
    #na segunda iteração vai multiplicar o segundo elemento no caso 6 ....
    #imprime o resultado na tela

     resultado = numero*2
     print(resultado)

    O resultado será: 

   2   12   6   8

    Como vimos no código acima criamos uma lista chamada list e atribuímos a ela os valores 1, 2, 3 e 4 depois criamos um for que vai percorrer cada elemento da lista e cada vez que a lista for percorrida vamos multiplicar o elemento da vez por 2 e adicionamos o resultado da multiplicação à variável resultado e em seguida  imprimimos a variável resultado na tela.
    A estrutura do laço de repetição for é a seguinte:

 Primeiro vem a palavra reservada for depois vem a variável que vai receber o valor de cada elemento da lista em cada iteração, depois vem a palavra reservada in, depois vem a lista, tudo que estiver dentro do for será repetido várias vezes dependendo do tamanho da lista.


For Aninhado

    Um for aninhado é quando temos um for dentro de outro for, digamos que temos duas listas uma com os números 1,2,3 e outra com os números 4,5,6 e queremos multiplicar cada valor da lista1 por todos os valores da lista2 então usaremos um for aninhado, veja abaixo.



#criamos a lista1
lista1 = [1,2,3]
#criamos a lista2
lista2 = [4,5,6]

#criamos o primeiro for
for l1 in lista1:
    #para cada elemento de lista1
    #cria um for, ou seja, quando l1 for 1
    #será criado um outro for que vai percorrer todos os elementos
    #de lista2 e multiplica-los por 1, e assim sucessivamente.
    for l2 in lista2:
        #aqui imprimimos na tela toda vez que for feita a multiplicação
        print(l1*l2)

    No exemplo acima criamos duas listas depois percorremos cada elemento da lista1 e em cada iteração é criado um novo for que percorre toda lista2 e multiplica os elementos da lista1 por todos os elementos da lista2.

    O resultado será:

    4    5    6    8    10    12    12    15    18    

    Python nos permite executar o mesmo código em uma unica linha veja abaixo:


#criamos a lista1
lista1 = [1,2,3]
#criamos a lista2
lista2 = [4,5,6]


[print (x*y) for x in lista1 for y in lista2]

O resultado será:

    4    5    6    8    10    12    12    15    18

segunda-feira, 25 de agosto de 2014

Persistencia com XMLEncoder e XMLDecoder.

Persistencia com XMLEncoder e XMLDecoder.



    A classe XMLEncoder é uma alternativa complementar à ObjectOutputStream e pode ser usado para gerar uma representação textual de um JavaBean da mesma maneira que o ObjectOutputStream pode ser usado para criar a representação binária de objectos Serializáveis.

   Com XMLEncoder podemos persistir nossos Objetos de uma forma similar a Serialização, porém nossos objetos serão armazenados em um arquivo xml.

   Vamos criar um projeto no Eclipse de forma que fique mais claro ver como a classe XMLEncoder Trabalha, para isso vamos abrir o Eclipse e criar um projeto chamado "Aula XmlEncoder" (você pode escolher o nome que quiser)  o nome do pacote daremos o seguinte com.renanwillamy.xmlencoder, agora vamos criar a classe Pessoa ela terá as seguintes variáveis nome,cpf e endereço todas do tipo String. veja abaixo como a classe deve ficar.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.renanwillamy.xmlencoder;

public class Pessoa {
 
 private String nome,cpf,endereco;
 
 public Pessoa() {
  // TODO Auto-generated constructor stub
 }

 public Pessoa(String nome, String cpf, String endereco) {
  super();
  this.nome = nome;
  this.cpf = cpf;
  this.endereco = endereco;
 }

 public String getNome() {
  return nome;
 }

 public void setNome(String nome) {
  this.nome = nome;
 }

 public String getCpf() {
  return cpf;
 }

 public void setCpf(String cpf) {
  this.cpf = cpf;
 }

 public String getEndereco() {
  return endereco;
 }

 public void setEndereco(String endereco) {
  this.endereco = endereco;
 }
 
 
}

    É importante que a classe que  vai ser armazenada tenha todos os getters e setters, no nosso caso a classe Pessoa, perceba que para todas as variáveis da classe Pessoa foi criado um método get e um set para cada variável, pois para que a classe XMLEncoder funcione perfeitamente temos que fazer isso.

    Agora vamos criar a classe responsável por persistir nossos objetos, crie uma classe chamada Persistencia que vai ter dois métodos um para salvar e outro para recuperar nossos objetos, veja abaixo:



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.renanwillamy.xmlencoder;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;




public class Persistencia {
 
 /* Passamos um Object como parametro, pois como todo objeto herda
  * de Object podemos passar qualquer objeto como argumento, também
  * passamos uma String que vai ser o nome do nosso arquivo xml*/
 public void salva(Object object,String fileName){
  
  BufferedOutputStream buf;
  try {
   FileOutputStream fos = new FileOutputStream(fileName);
   buf = new BufferedOutputStream(fos);
   XMLEncoder xml = new XMLEncoder(buf);
   xml.writeObject(object);   
   xml.close();
   
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } 
  
 }
 // auqui passamos apenas o nome do nosso arquivo xml
 public Object load(String fileName){
  FileInputStream fis;
  try {
   fis = new FileInputStream(fileName);
   BufferedInputStream buf = new BufferedInputStream(fis);
   XMLDecoder xml = new XMLDecoder(buf);
   Object object = xml.readObject();
   xml.close();
   
   return object;
   
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
                // Caso ocorra algum erro retorna null
  return null;
  
  
 }

}

    Agora vamos criar uma classe que vai testar nossas classes, crie uma classe chamada Principal
ela vai ter um método main onde vamos testar os métodos salva() e load().



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
package com.renanwillamy.xmlencoder;

public class Principal {
 
 public static void main(String[] args) {
  Persistencia pers = new Persistencia();
  Pessoa pessoa = new Pessoa("Renan", "00005542", "Rua fulano de tal");
  pers.salva(pessoa, "pessoa.xml");
  
  
  
  System.out.println(pessoa.getNome()+"  : "+pessoa.getCpf());
 }

}

    No código acima criamos uma classe chamada Principal e em seu método main criamos um objeto pers (da classe Persistencia) e um objeto pessoa que tem os seguintes dados: nome = Renan, cpf = 0005542 e endereco = Rua fulano de tal, logo após criarmos o objeto pessoa armazenamos ele em xml através do método salva do objeto pers, como não estamos especificando um local para o arquivo xml ser armazenado ele será armazenado dentro da pasta do seu projeto, você pode abrir o arquivo xml e ver os dados armazenados de cada variável do nosso objeto pessoa. Depois imprimimos na tela o nome e o cpf do objeto pessoa.

    Agora vamos recuperar nosso objeto através do método load() que nós criamos na classe Persistencia, veja abaixo.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
package com.renanwillamy.xmlencoder;

public class Principal {
 
 public static void main(String[] args) {
  Persistencia pers = new Persistencia();
  
  
  Pessoa pessoa = (Pessoa) pers.load("pessoa.xml");
  
  System.out.println(pessoa.getNome()+"  : "+pessoa.getCpf());
 }

}

   Neste trecho de código acima criamos um objeto pers (da classe Persistencia), criamos um objeto pessoa que vai receber um objeto pessoa que é retornado pelo método load() passando como argumento o nome do arquivo xml  no nosso caso pesssoa.xml. Como o método load() retorna um object precisamos fazer um cast (Pessoa) quando for atribuir o valor retornado pelo método load() à variável pessoa, é como se fosse uma forma de avisar a Máquina Virtual Java que nós temos certeza que o objeto retornado pelo método load() é um objeto pessoa, depois imprimimos na tela o nome e o cpf do objeto pessoa.

    O resultado será:

    Renan  : 00005542

  Uma forma de trabalhar com armazenamento de dados em xml é usando ArrayList pois como o ArrayList também é um objeto podemos armazena-lo sem problemas, vamos aproveitar o nosso exemplo e criar outros objetos de Pessoa cada um com seus respectivos nomes,cpfs e endereços, como nós já temos um método que salva um objeto e nós sabemos que o ArrayList é um objeto, tudo que devemos fazer é adicionar nossos objetos pessoa ao nosso ArrayList e depois salvar-lo, vejamos abaixo.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.renanwillamy.xmlencoder;

import java.util.ArrayList;

public class Principal {
 
 public static void main(String[] args) {
  
  //Criamos um ArrayList  
  ArrayList<Pessoa> listaPessoas = new ArrayList<>();
  
  //criamos nosso objeto de persistencia
  Persistencia pers = new Persistencia();
  
  //Criamos nossos objetos pessoas cada um com seus proprios dados
  Pessoa pessoa1 = new Pessoa("Renan", "12.488.115.68", "Rua fulano de tal");
  Pessoa pessoa2 = new Pessoa("José", "13.498.215.22", "Rua beltrano de tal");
  Pessoa pessoa3 = new Pessoa("Maria", "25.325.185.84", "Rua cicrano de tal");
  Pessoa pessoa4 = new Pessoa("Paulo", "00.188.315.18", "Rua alguma coisa de tal");
  
  //adicionamos nosso objetos pessoa no ArrayList
  listaPessoas.add(pessoa1);
  listaPessoas.add(pessoa2);
  listaPessoas.add(pessoa3);
  listaPessoas.add(pessoa4);
  
  //Salvamos nosso ArrayList
  pers.salva(listaPessoas, "lista_de_pessoas.xml");
  
  
  
 
 } 

}

    Agora que já armazenamos nosso ArrayList vamos recupera-lo e mostrar os nomes e cpfs de todos os objetos pessoa que estão em nosso ArrayList, veja:



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.renanwillamy.xmlencoder;

import java.util.ArrayList;

public class Principal {
 
 public static void main(String[] args) {
    
  //criamos nosso objeto de persistencia
  Persistencia pers = new Persistencia();
  
  //recuperamos nosso Objeto ArrayList
  ArrayList<Pessoa> listaPessoas = (ArrayList<Pessoa>) pers.load("lista_de_pessoas.xml");
  
  // percorremos o nosso ArrayList e imprimimos os nomes e cpfs de cada pessoa 
  //do nosso ArrayList
  for (Pessoa pessoa : listaPessoas) {
   
   System.out.println("Nome : "+pessoa.getNome()+" Cpf : "+pessoa.getCpf());
  }
  
 
 } 

}

    Agora criamos um objeto de Persistencia pers criamos uma variável listaPessoas do tipo ArrayList<Pessoa> e atribuímos a ela o valor que é retornado através do método load() do nosso objeto pers observe que depois do sinal de igual fizemos novamente um cast que é esse ArrayList<Pessoa> entre parênteses, isso é porque nosso método load() retorna um objeto e com esse cast nós estamos informando a Maquina Virtual java que nós temos certeza que o objeto que está sendo retornado é um ArrayList<Pessoa>, depois nós criamos um for para  percorrer todo o nosso ArrayList e imprimimos na tela todos os nomes e cpfs de todos os objetos pessoa que estão no ArrayList.

    O resultado será:
 
    Nome : Renan Cpf : 12.488.115.68
    Nome : José Cpf : 13.498.215.22
    Nome : Maria Cpf : 25.325.185.84
    Nome : Paulo Cpf : 00.188.315.18

Python – Variáveis

Python – Variáveis

    Uma das coisas mais importantes em qualquer linguagem de programação são as variáveis, se você já tem conhecimento de alguma outra linguagem de programação então você certamente entende o que estou dizendo, as variáveis são tipos de dados em que você pode armazenar valores, o Python é muito inteligente quando se trata de variáveis pois você não precisa declarar o tipo de valor que quer armazenar basta apenas colocar o sinal de igual entre o nome da variável e o tipo de dado que você quer armazenar, veja o exemplo:




a = 1 # um inteiro
b = 'Renan Willamy' #uma string
c = 1.2 # um float 

    Podemos ver que Python é inteligente o suficiente para entender que tipo de variável estamos querendo armazenar sem precisarmos declarar isso, no exemplo acima a variável ‘a ‘ é do tipo inteiro , avariável ‘b’ é do tipo string ,ou seja, texto, a variável ‘c’ é do tipo float que são números decimais. Vejamos algumas operações matemáticas envolvendo variáveis: 



x = 2
y = 3
multiplica = x * y
soma = x + y
divide = x / y
print (soma)
print (multiplica)
print (divide) 

O resultado será :
5
6
0.6666666666666666


    Como vimos no exemplo não precisamos declarar nenhum tipo de variável pois o Python já fez isso para nós porem essa inteligencia pode ser algo ruim algumas vezes, por exemplo, digamos que criamos uma variável ‘a’  essa variável é uma string, mas depois de algum tempo nós decidimos que o valor desta variável será um inteiro, o que acontece? o Python vai lançar um erro e vai explodir na nossa cara, é aí onde entra o cast, e o que é isso? O cast é uma forma de lançar um tipo de uma variável em outro tipo, vejamos um exemplo:



# criamos a variável a
a = "2"
b = 3
print(a+b)
# aqui vai dar erro pois voce nao pode somar uma string com um inteiro
    #A maneira certa é:
a = "2"
b = 3
print ( int(a) + b )  # aqui fazemos o cast lançando uma string em um inteiro com a funcao int()

    Existe outros tipos de cast para string, para float, e outros, porémos mais usados são  esses que mencionei. Aqui concluímos nosso post sobre esse assunto no próximo post veremos os operadores em Python, vejo você lá.

Python – Comentários

Python – Comentários

    É recomendável que você comente seu código para que outros programadores ou até mesmo você não fique perdido quando for fazer a manutenção do seu código, em Python há duas maneiras de comentar um código.
    Bem uma das formas de você comentar seu código em Python é com o # (cerquilha) antes do trecho que você quer comentar, lembrando que o # (cerquilha) serve para comentar apenas uma linha, exemplo:



>#esse eh um comentario de uma linha  

    A outra forma de comentar em Python é através de três aspas simples, esse tipo de comentário é usado para comentar várias linhas de código e também é utilizado para eliminar determinado trecho de código quando você quiser testar seu código sem aquele trecho comentado, veja o exemplo:



'''''este eh um comentario de varias linhas de  
codigo muito usado quando se quer detalhar o seu codigo 
ptint("isso não será executado ")'''  

    Finalizamos por aqui nosso post sobre comentários em Python , e lembre-se que os comentários são de grande importância quando estiver trabalhando com códigos complexos em Python. No próximo post veremos Variáveis em Python, vejo você lá.

Python Introdução

Python Introdução

    Primeiramente para usar Python é necessário baixar  o IDLE que nada mais é que uma ferramenta que permite que você crie e execute códigos da Linguagem Python . O Python pode executar HTML como outras linguagens, mais é mais usado como um módulo. Antes de começar instale o IDLE do Python para poder começar a de-bugar seus códigos, e a propósito neste post e nos próximos estaremos usando a versão 3 do Python.

    Depois de instalado o IDLE do Python execute o seguinte comando:



print ("Testando o Idle")
print ('Testando com aspas simples e ponto e vírgula');


Observe que em Python você pode usar tanto aspas simples quanto duplas quando se trata de strings (strings é um tipo usado para texto), você também pode usar ponto e vírgula ou não você escolhe.A linguagem Python é muito flexível você verá isso nos posts seguintes, mas uma coisa o Python é exigente que é a indentação que é como se você estivesse escrevendo parágrafos no código, iremos abordar isso nos próximos posts.

    A saída do código acima será:

        Testando o Idle        Testando com aspas simples e ponto e vírgula

    O print () é uma função do Python que imprime na tela o que estiver dentro dos parênteses, iremos usar bastante essa função para mostrar valores de variáveis por exemplo. Como você já deve ter notado a linguagem Python é uma das linguagens que tem a sintaxe mais fáceis de aprender pois ela é muito clara e objetiva, mas não se deixe enganar pensando que essa linguagem não é poderosa pois Python pode fazer coisa grandiosas por exemplo a Nasa usa Python. No próximo post falaremos sobre comentários usados pela linguagem Python vejo você lá.

Python – Listas

Python – Listas

    Muitas linguagens de Programação insistem que cada variável tenha um tipo declarado (inteiro,booleano,string,etc…) já em Python as variáveis ou identificadores são simplesmente nomes que referenciam um dado objeto de algum tipo. Uma lista em Python pode muito bem ser criada da seguinte forma:

    Quando uma lista é criada em Python o interpreter que é um programa que lê programas em Python e cuida de suas instruções (antes de criar qualquer programa em Python você precisa primeiro instalar o interpreter) cria uma estrutura como um array (um conjunto de dados separados por posições) na memória para guardar temporariamente seus dados. Em muitas linguagens de programação as posições de um array começam a partir de zero e em Python não é diferente. No caso da figura acima “Renan Willamy” estaria na posição de numero zero o numero 2 estaria na posição 2 e True na posição três veja na figura abaixo como obter o valor de cada posição da lista:


    Uma lista pode ser facilmente alterada simplesmente por atribuir um valor a uma posição da lista, se esta posição já estiver ocupada ela será sobrescrita, se a posição ao qual você atribuir um valor não estiver dentro do tamanho da lista você vai se deparar com o seguinte erro: IndexError: list assignment index out of range , esse erro acontece quando você tenta acessar uma posição que não existe dentro de um alista, então você me pergunta “como assim? . Bem, quando uma lista é criada seu tamanho é determinado dependendo da quantidade de dados atribuídos a ela, por exemplo na nossa lista temos três valores atribuídos a ela, sendo assim o tamanho da nossa lista é 3, logo se chamarmos lista[3] (lembre-se que uma lista começa do zero) o programa irá lançar o erro citado acima observe a figura abaixo: 


Algumas funções usadas com listas:

  • lista.append(“Aqui vai o dado”) # Acrescenta um dado a lista

  • lista.remove(“Aqui vai o nome do dado que você quer remover”) # Remove um dado da lista

  • lista.insert(“Aqui vai a posição , Aqui vai o dado”) #Adiciona um dado na lista onde o primeiro parâmetro é o índice da posição e o segundo é o dado que você quer inserir na lista.

  • len(lista) # mostra o tamanho da lista


Sobre Python

Sobre Python


    Python é uma linguagem de programação dinâmica extraordinariamente potente que é usada em uma ampla variedade de domínios de aplicação . Python é muitas vezes comparada a Tcl, Perl, Ruby, Scheme ou Java.Algumas das suas características-chave incluem:

  • Muito clara, sintaxe legível

  • Capacidades de introspecção fortes

  • Orientação a objetos intuitiva

  • Expressão natural do código processual

  • Modularidade completa, suportando pacotes hierárquicos

  • Baseada em exceção de manipulação de erros

  • Tipos de dados dinâmicos de nível muito elevado

  • Extensas bibliotecas padrão e módulos de terceiros para praticamente todas as tarefas

  • Extensões e módulos facilmente escritos em C, C + + (ou Java para Jython, ou. línguas NET para IronPython)

  • Embutido dentro de aplicações como uma interface de scripting

    Python combina poder notável com uma sintaxe muito clara. Tem módulos, classes, exceções, muito alto nível tipos de dados dinâmicos e tipagem dinâmica. Existem interfaces para muitas chamadas e bibliotecas do sistema, bem como para vários sistemas de janelas. Novos módulos embutidos são facilmente escritos em C ou C ++ (ou outros idiomas, dependendo da aplicação escolhida). Python é também usado como uma linguagem de extensão para aplicações escritas em outras línguas que precisam de interfaces de script ou de automação de fácil utilização.

domingo, 24 de agosto de 2014

Android – Criando uma ListView

Android – Criando uma ListView

    Muitas pessoas se perdem quando o assunto é criar uma ListView com base nisso estou disponibilizando este tutorial para ensinar de maneira fácil e rápida como criar uma ListView. Vamos lá.
    Primeiro crie um projeto com qualquer nome que quiser depois abra a sua MainActivity.java (sua Activity principal) e ao invés de extender de Activity você vai extender de ListActivity:

public class MainActivity extends ListActivity {…

    Agora crie um variável de instância chamada lista essa lista vai receber um array de Strings cada String dentro deste array sera um item de nossa ListView veja:



1
2
3
4
public class MainActivity extends ListActivity {
private String[] lista = { "Aula 1", "Aula 2", "Aula 3", "Aula 4", "Aula 5",
"Aula 6", "Aula 7","Aula 8", "Aula 9", "Aula 10", "Aula 11",
"Aula 12", "Aula 13", "Aula 14"};
    
Agora delete o método setContentView(R.Layout….) pois esse método define que nossa view será esse dentro dos parênteses e não é isso que queremos, uma vez que você deletou o setContentView() dentro do método onCreate() chame o método setListAdapter() esse método vai prover um cursor para ListView veja abaixo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public class Principal extends ListActivity {
    private String[] lista = { "Aula 1", "Aula 2", "Aula 3", 
    "Aula 4", "Aula 5","Aula 6", "Aula 7","Aula 8", "Aula 9", "Aula 10", 
    "Aula 11","Aula 12", "Aula 13", "Aula 14"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, lista));
    }



    Como vimos acima o método setListAdapter recebe por parâmetro um ArrayAdapter anônimo isto é não tivemos que criar um novo objeto ArrayAdapter para usar na nossa lista nós poderíamos é claro mas fica pra próximos tutoriais. Bem voltando esse ArrayAdapter recebe por parâmetro um Context que no nosso caso é a própria classe que extend de ListActivity, e o segundo parâmetro é um resource e nós passamos  layout simple_list_item_1 que é o tipo de layout que nossa ListView usará e o terceiro parâmetro é um array de Objetos que no nosso caso é um array de Strings. Confira no vídeo abaixo como criar a sua ListView e também como efetuar cliques em cada item.


sábado, 23 de agosto de 2014

Java – Persistência de Dados Com Serialização

Java – Persistência de Dados Com Serialização


    Depois de algum tempo sem postar artigos devido a falta de tempo aqui está eu de novo e o artigo de hoje será como guardar seus dados sem a necessidade de criar um banco de dados para isso. Vamos lá.

Com a Interface Serializable você pode guardar o estado do seu objeto ou seja se você criar um determinado objeto e atribuir valores a ele e serializar esse objeto, você terá todos os valores do objeto novamente, por exemplo se você criar um ArrayList e adicionar 10 inteiros a ele e serializa-lo, quando você recupera-lo você terá os 10 inteiros novamente não é demais?

    Para melhor entendimento criarei uma classe chamada Biblioteca uma vez que vamos simular um sistema simples de biblioteca, essa classe terá um ArrayList ao qual serão guardados os nossos livros e também terá o método main, também criarei uma classe chamada Livro essa classe deve implementar Serializable uma vez que para que possamos serializar uma classe ela deve implementar a interface Serializable, você deverá também fazero o seguinte import “import java.io.Serializable;” essa classe terá uma variável de instância chamada de nome a qual guardaremos o nome de cada livro. Abaixo como ficarão nossas classes:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import java.io.Serializable;
public class Livro implements Serializable {
private String nome;
 // no construtor passaremos o nome do livro
public Livro(String nome){
this.nome = nome;
}
 // Aqui podemos recuperar o nome do livro
public String getNome(){
return nome;
}
}
public class Biblioteca {
private static ArrayList<Livro> listLivros = new ArrayList<>();
public static void main(String[] args) {
     }
}

Agora precisamos criar os métodos para serializar e carregar nossos dados armazenados, para isso vamos criar um método na classe Biblioteca chamado serializa() que receberá como parâmetro o nome do arquivo e um ArrayList com os livros, como assim o nome do arquivo? quando você quer serializar um objeto você tem que criar um arquivo cuja extensão você escolhe, eu gosto de criar o arquivo com a extensão .ser (serializavel), enfim pode ser qualquer uma, voltando ao raciocínio depois de criar este arquivo.ser você vai gravar seus dados nele. Vejamos o método serializa():

    


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
// O método serializa recebe dois parametros o primeiro é o nome do arquivo
        //que vamos salvar como se fosse um bloco de notas (obs você pode colocar qualquer extensão
        // no nosso caso a extensão é .ser)
public static void serializa(String arquivo,ArrayList<Livro> livros){
try {
//criamos um objeto FileOutputStream que receberá uma String com o nome do
                //arquivo
FileOutputStream fos = new FileOutputStream(arquivo);
ObjectOutputStream oos = new ObjectOutputStream(fos);
               //pegamos o ObjectOutputStream para escrever com o método writeObject
                // e passamos o nosso ArrayList Como argumento
oos.writeObject(livros);
             // Em seguida fechamos ambos arquivos
fos.close();
oos.close();
            } catch (Exception e) {
          e.printStackTrace();
}
}

   

     Agora que já criamos o método serializa() precisamos de um método que recupere nossos dados para isso criaremos na classe Biblioteca o método load() que receberá como parâmetro o nome do arquivo (no nosso caso arquivo.ser) lembrando que na hora de recuperar nossos dados o nome do arquivo deve ter o mesmo nome e a mesma extensão que você deu ao seu arquivo, veja como ficará nosso método load():


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static ArrayList<Livro> load(String arquivo){
 // crie um ArrayList de Livro para depois retorna-lo
            //com os dados recuperados do seu arquivo
ArrayList<Livro> lista = new ArrayList<>();
try {
 // Crie um objeto do tipo FileInputStream e passe como
                //parametro o nome do arquivo com a mesma extensao
FileInputStream fis = new FileInputStream(arquivo);
 // crie um objeto do tipo ObjectInputStream passando como
                //parametro o FileInputStream que você criou
ObjectInputStream ois = new ObjectInputStream(fis);
 // atribua a sua lista de Livros os dados recuperados
                //apartir do método readObject() do ObjectInputStream
lista = (ArrayList<Livro>) ois.readObject();
   //Feche
fis.close();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
    //retorne o ArrayList com os dados atualizados
return lista;
}


Agora vamos testar nossa pequena aplicação:



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
public class Biblioteca {
private static ArrayList<Livro> listLivros = new ArrayList<>();
public static void main(String[] args) {
   //Aqui eu crio três livros
Livro lv1 = new Livro("Head First – Java");
Livro lv2 = new Livro("Head First – Python");
Livro lv3 = new Livro("Head First – Mysql");
 // Adiciono os livros na minha listLivros
listLivros.add(lv1);
listLivros.add(lv2);
listLivros.add(lv3);
 //Aqui eu gravo (serializo) meus dados no arquivo livro.ser
serializa("livro.ser", listLivros);
   // Recupero todos o ArrayList e percorro ele com um for
for (Livro livr : load("livro.ser")) {
 //imprimo cada item na tela
System.out.println(livr.getNome());
};
}


Quando você usar o método serializa() o arquivo será criado na pasta do seu projeto.

Termina aqui o nosso artigo sobre Serialização se você gostou comente.



Java - ArrayList


    O ArrayList é uma classe do Java a qual lhe dá a possibilidade de armazenar valores em forma de lista em sua estrutura, esses valores podem ser inteiros, double , char, boolean inclusive referências de Objetos. Alguns métodos muito usados dessa classe são:
  • add(valor a ser adicionado); //adiciona um valor no ArrayList
  • size();  // retorna o tamanho do ArrayList
  • getIndexOf(valor que deseja saber o índice);  // retorna o indice do valor que você quer dentro do ArrayList
  • contains(valor que deseja verificar); // retorna true se o valor que você passou existe dentro do ArrayList
  • remove(valor a ser removido// este método remove o valor  que você passar através do valor ou índice do valor

    Para melhor entendimento vamos ver um exemplo abaixo de como criar um ArrayList do tipo String , ou seja, todos os valores que estiverem nesse ArrayList terão que ser do tipo String. Vejamos abaixo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
   // cria o objeto ArrayList ( é o tipo de dado )
    ArrayList nomes = new ArrayList<>();
    //Aqui adicionamos os valores na lista
    nomes.add("Renan");
    nomes.add("José");
    nomes.add("Maria");
    nomes.add("João");

    //percorro todos os itens da lista com um for
    for (String n : nomes) {

   //pego o indice de e nome de n cada iteracao do for
   System.out.println(nomes.indexOf(n)+"º nome = "+n);

  }
    //com o metodo do Arraylist size pego o tamanho da lista
    System.out.println("A lista tem "+nomes.size()+" itens");

 }


A saída será: 

0º nome = Renan 

1º nome = José 

2º nome = Maria 

3º nome = João 

A lista tem 4 itens


     Como mostrado acima é muito fácil e útil usar o ArrayList, no exemplo eu crie o ArrayList<String> onde o que fica entre os sinais <> é o tipo do valor , depois eu adicionei cada nome (String) em uma posição do ArrayList sabendo que a primeira posição do ArrayList é 0 a segunda 1 e assim sucessivamente.    

 Cada vez que utilizamos o método add() nós adicionamos o valor na seguinte posição vazia do ArrayList, no exemplo acima o primeiro valor foi “Renan” e foi alocado na posição 0 do ArrayList o segundo valor foi “José” que foi alocado na segunda posição do ArrayList e assim a cada vez que chamarmos o método add() será alocado um valor na próxima posição vazia do ArrayList;   E se quiséssemos remover um desses nomes do ArrayList como faríamos? Veja no exemplo abaixo



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static void main(String[] args) {
   // cria o objeto ArrayList ( é o tipo de dado )
    ArrayList nomes = new ArrayList<>();
    //Aqui adicionamos os valores na lista
    nomes.add("Renan");
    nomes.add("José");
    nomes.add("Maria");
    nomes.add("João");

    //Aqui eu vou remover através do indice
    nomes.remove(3);

    //Aqui eu vou remover através do valor que adicionei anteriormente
    nomes.remove("Maria");

    //percorro todos os itens da lista com um for
    for (String n : nomes) {

   //pego o indice de e nome de n cada iteracao do for
   System.out.println(nomes.indexOf(n)+"º nome = "+n);

  }
    //com o metodo do Arraylist size pego o tamanho da lista
    System.out.println("A lista tem "+nomes.size()+" itens");

 }

A saída será:             

0º nome = Renan 
1º nome = José 
A lista tem 2 itens 

    Observe que eu removi os valores usando o mesmo método pois ele é sobrecarregado ou seja dependendo do argumento que você passar ele vai se comportar de uma maneira diferente sendo que como passei no primeiro caso o índice 3 que era “João” o método procurou dentro do ArrayList o valor que estava naquele índice.

    No segundo caso eu removi os valores usando o próprio valor que eu havia adicionado antes e o método conferiu se no Array existia esse valor e quando verificou que sim ele simplesmente removeu o valor.