Tutorial Android #13 – Configurando Preferências

Olá novamente pessoal! Estão curtindo a série? Espero que sim! 🙂

Hoje vamos adicionar ao nosso aplicativo Lista de Restaurantes a opção do usuário configurar de que forma deve ocorrer a listagem dos restaurantes (nome, tipo, ordem alfabética, etc.).

Pra começar, vamos criar um arquivo XML que tomará conta das configurações de preferência. Dessa forma, crie o arquivo preferencias.xml e coloque-o em res/xml (a pasta ainda não existe… então crie-a). O conteúdo dele será:

Em seguida, vamos criar o arquivo arrays.xml que definirá os dois arrays referenciados no XML definido acima. O arquivo arrays.xml deverá ser salvo na pasta res/values. Seu conteúdo é listado a seguir:

O próximo passo é a criação da Activity responsável pelas preferências. Vamos criar a classe EdicaoPreferencias, que estenderá PreferenceActivity, dentro do pacote net.rafaeltoledo.restaurante:

Também é necessário atualizar o arquivo AndroidManifest.xml, já que adicionamos uma nova Activity ao nosso projeto.

Continuando, vamos agora vincular a nossa nova Activity ao menu de opções. Primeiramente, vamos editar o arquivo opcao.xml, que se encontra em res/menu.

O ícone referenciado é padrão do sistema e, como mostrado no último post, pode ser encontrado na própria instalação da SDK. Este ícone utilizado se chama ic_menu_preferences (que eu renomeei para menu_preferencias em nosso projeto).

Agora, vamos modificar o método onOptionsItemSelected na classe ListaRestaurantes para mapear esta nova opção adicionada ao menu:

Neste ponto, se você rodar a aplicação, já poderá conferir o menu:

Agora, já que a parte visual está pronta, vamos aplicar a ordenação a nossa lista. Primeiramente, precisamos que o método obterTodos() da classe GerenciadorRestaurantes precisa receber o método de ordenação por parâmetro e aplicá-lo a SQL. Modifique-o para que fique assim:

Agora, precisamos de um atributo na classe ListaRestaurantes que nos permita saber a ordenação selecionada e aplicá-la a listagem. Adicione um atributo à classe chamado prefs do tipo SharedPreferences.

Em seguida, adicione a inicialização do atributo no método onCreate(), próximo ao seu início.

E modifique a chamada ao método obterTodos() logo em seguida:

Por fim, vamos fazer com que seja aplicada as alterações realizadas pelo usuário em tempo de execução, já que, por enquanto, é necessário fechar a aplicação para que a nova ordenação tenha efeito. Adicione esta linha ao fim do método onCreate():

Em seguida, vamos criar o listener dentro da classe ListaRestaurantes:

Continuando, vamos isolar a inicialização da lista em um método à parte, deixando o método onCreate() mais limpo. Crie o método inicializarLista():

Agora, referenciamos o recém-criado método inicializarLista() no método onCreate():

E então, também fazemos uma chamada ao método inicializarLista() dentro do nosso prefListener:

E pronto! Já temos o nosso aplicativo funcionando! 🙂

Se você perdeu alguma coisa ou quiser baixar o projeto, só clicar aqui!

Tá ficando interessante, não? Aguardem que vai ficar mais bacana ainda!

3 comentários sobre “Tutorial Android #13 – Configurando Preferências

  1. Laelson Coutinho disse:

    Olá, muito bem explicado. Eu estou com um problema que penso eu que se encaixe nessa área.

    Trata-se e uma modificação que eu estou fazendo para adicionar efeitos de transição na Touchwiz (launcher da samsung)

    eu ja fiz o que precisava na launcher, e também adicionei as opções e efeitos no aplicativo e configurações (SecSettings2, pra ser mais exato, na configuração do visor/display)
    vou passar abaixo o que eu fiz.

    Em res/xml/display_settings.xml eu adicionei isto:

    ListPreference android:entries=”@array/tw_effect_entries” android:title=”Touchwiz Page Effect” android:key=”tw_page_effect” android:defaultValue=”1″ android:entryValues=”@array/tw_effect_values” />

    Depois adicionei isso em strings.xml

    None
    Cascade
    Outer cube
    Inner Cube
    Carousal
    Plain
    Conveyor
    Card

    1
    2
    3
    4
    5
    6
    7
    8

    Feito isso, compilei o apk, a opção aparece tudo certinho, porém, mesmo selecionando um dos efeitos,
    continua do mesmo jeito (nada muda).

    Suspeito que precise criar um arquivo xml como esse preferences.xml, ou uma classe java. Pode me ajudar com isso?

    Entenda melhor aqui aonde tem todo o processo, inclusive as mudanças da touchwiz

    https://forum.xda-developers.com/showpost.php?p=72583990&postcount=10913

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.