terça-feira, 27 de setembro de 2011

Android: Preferences

Vamos falar de android.preference. É uma coleção de classes para lidar com o armazenamento de configurações e preferências do usuário, mas também podem servir para guardar a última posição em um jogo, tabela de highscores, e outros dados simples sem a complexidade de um banco de dados. Pensando neste uso é que escrevo este Post. Vamos pensar em um simples contador que pode marcar por exemplo quantas vezes a pessoa bebeu um copo de água ao longo de um dia. As preferências(dados) são armazenadas em um arquivo, e os valores recebem um nome através dos quais serão acessados. Por exemplo:



SharedPreferences mySharedPreferences = getSharedPreferences(COPOS, Activity.PRIVATE);
SharedPreferences.Editor editor;
/* COPOS é o nome do arquivo que guarda as preferências da aplicação
   Modo privado para abertura garante acesso exclusivo à aplicação
*/
mySharedPreferences = getSharedPreferences("COPOS", Activity.PRIVATE);
// buscando um valor de nome copos que é um inteiro
int n_copos = mySharedPreferences.getInt("copos",0);
n_copos++;
// iniciando o processo de atualização
editor = mySharedPreferences.edit();
// alterando o campo copos
editor.putInt("copos", n_copos);
// Salvando a alteração
editor.commit();

Este trecho de código poderia ser utilizado para incrementar um contador copos que ficaria armazenado no arquivo de preferências COPOS. Da mesma forma o valor poderia ser obtido e exibido na tela no final do dia.

Bom este é um exemplo muito simples mas que pode abrir um leque interessante de utilizações para esta classe.

Qualquer dúvidas consultem a documentação e me coloco a disposição.
Até o próximo POST.

sexta-feira, 12 de agosto de 2011

Fieldset com Zend

Bom, Zend_Form tem um decorator com o nome fieldset mas também tem um Element_Form chamado groups que pode funcionar da mesma forma. Todos os elementos de um 'group' são tratados conjuntamente apenas na hora da renderização, ou seja cada elemento pode ser acessado e alterado independentemente, mesmo após ter sido atribuído a um group. Vamos ao que interessa:


// criando um elemento do Zend_Form chamado group
$grupo = new Zend_Form_Element_Text('group');

/* criando um campo de texto com id = nome e outro com id=endereco
estou usando $this pensando que estamos colocando isto dentro de uma classe que estende Zend_Form
*/
$this->addElement('text', 'nome');

$this->addElement('text', 'endereco');

// adicionando o grupo ao form
$this->addElement($grupo);

// adicionando o campo nome e endereco ao grupo
$this->addDisplayGroup(array('nome',endereco), 'groups', array("legend" ="Vendas Financiadas"));

A função addDisplayGroup adiciona então o grupo ao formulário. Esta função tem os seguinte parâmetros:
  • $elementos: um array com o nome de cada elemento que pertencerá ao group.
  • $grupo: nome do group.
  • $options: este parâmetro é opcional, e é um array de opções ou um objeto Zend_Config. 
É isso aí, abraços

    Numa terra muito muito distante...

    Falando sério, minha idéia é trazer soluções para dúvidas minhas, idiotas ou não, quanto à programação em algumas linguagens e partilhá-las com quem interessar. Aceito críticas, dúvidas e sugestões. Vou começar falando do framework Zend, o qual estou utilizando e estudando por conta própria. Se vou falar só de programação? Acho que não, a vida é recheada de problemas que podemos desprogramar, e porque não falar de música, vinhos...