Ver mensagens sem resposta | Ver tópicos ativos Hoje é 21 Mai 2013, 08:41



Responder Tópico  [ 1 Mensagem ] 
 [TUTORIAL] ListView parte 3 
Autor Mensagem
What is Android?
What is Android?

Data de registro: 17 Jul 2011, 21:12
Mensagens: 7
Mensagem [TUTORIAL] ListView parte 3
Olá,

Dando sequência a série sobre ListView, esse que é um dos recursos mais importantes do Android, estamos chegando a parte 3.

O exemplo de hoje será uma variação da parte2 http://www.portalandroid.org/comunidade/viewtopic.php?f=7&t=15323, onde será criado um ListView com alguns estados brasileiros com múltipla escolha, a diferença está por conta do layout, que terá fixo no rodapé dois botões, que irão informar ao usuário quais estados foram marcados e quais não foram marcados.

Vamos por logo a mão na massa, abaixo segue o código fonte do arquivo list3.java:


package br.com.empresa;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
 
public class list3 extends Activity {
    private String[] lstEstados;
    ListView listView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lista3);
 
        listView = (ListView) findViewById(R.id.lista3);
         
        //Criar um array de String
        lstEstados = new String[] {"São Paulo", "Rio de Janeiro", "Minas Gerais", "Rio Grande do Sul", "Santa Catarina", "Paraná", "Mato Grosso", "Amazonas"};
 
        //Criar um ArrayAdapter do tipo String, que vai fazer aparecer as Strings acima
        //em seu ListView do tipo que checked
        ArrayAdapter<string> adapter = new ArrayAdapter<string>(this,
            android.R.layout.simple_list_item_checked, lstEstados);
         
        //Associar o adapter ao listview
        listView.setAdapter(adapter);
    }
 
    //Este evento foi definido no arquivo de layout xml
    public void btnMarcados_click(View view){
        String lstrEstadosSelecionados = "";
 
        //Cria um array com os itens selecionados no listview
        SparseBooleanArray checked = listView.getCheckedItemPositions();
 
        for (int i = 0; i < checked.size(); i++){
            //pega os itens marcados
            lstrEstadosSelecionados += lstEstados[checked.keyAt(i)] + ",";
        }
        Toast.makeText(this, "Estados marcados : " + lstrEstadosSelecionados, Toast.LENGTH_LONG).show();
    }
 
    //Este evento foi definido no arquivo de layout xml
    public void btnDesmarcados_click(View view){
        String lstrEstadosSelecionados = "";
 
        for (int i = 0; i < listView.getCount(); i++){
            //pega os itens desmarcados
            if (listView.isItemChecked(i) == false){
                lstrEstadosSelecionados += lstEstados[i] + ",";
            }
        }
        Toast.makeText(this, "Estados desmarcados : " + lstrEstadosSelecionados, Toast.LENGTH_LONG).show();
    }    
}
 


Para esse exemplo será necessário criar um arquivo de layout, até porque estaremos incluindo dois botões nesse layout e eles ficarão fixos no rodapé do layout.

Abaixo segue o código fonte do arquivo lista3.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ListView
        android:choiceMode="multipleChoice"
        android:id="@+id/lista3"
        android:layout_above="@+id/buttons"
        android:layout_alignParentTop="true"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"/>

 
    <LinearLayout
        android:id="@+id/buttons"
        android:layout_alignParentBottom="true"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:orientation="horizontal">

 
        <Button
            android:id="@+id/btnMarcados"
            android:layout_height="wrap_content"
            android:layout_weight="50"
            android:layout_width="fill_parent"
            android:onClick="btnMarcados_click"
            android:text="Marcados"/>

 
        <Button
            android:id="@+id/btnDesmarcados"
            android:layout_height="wrap_content"
            android:layout_weight="50"
            android:layout_width="fill_parent"
            android:onClick="btnDesmarcados_click"
            android:text="Desmarcados"/>

 
    </LinearLayout>
</RelativeLayout>
 


Para explicação do layout xml acima temos o seguinte:
1. Criamos um LinearLayout com 2 botões dentro de um RelativeLayout que contém o ListView
2. ListView android:choiceMode="multipleChoice" - Informamos que teremos seleção em nossa lista
3. ListView android:layout_alignParentTop="true" - O ListView ficará alinhado no topo de nosso xml
4. Button android:onClick="btnMarcados_click" - Dizemos qual função irá receber o evento click do botão
5. Button android:layout_weight="50" - Dizemos que o tamanho do botão será de 50% da tela

Como resultado final teremos a seguinte tela:
Imagem

Em breve estarei postando mais opções relacionadas a layout e listview.

Acessem o meu blog http://escoladeandroid.blogspot.com que lá vocês encontram mais tutoriais relacionados a ListView.

Obrigado e até mais...

_________________
Circus Puzzle Free - testem, comentem
https://market.android.com/details?id=br.com.escoladeandroid&feature=search_result

Escola de Android
http://escoladeandroid.blogspot.com/


18 Dez 2011, 13:37
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 1 Mensagem ] 

Quem está online

Usuários vendo este fórum: ademilson, ademir.carvalhojr, adilson, adilson.afl, adolfo, Adriano, akaytatsu, albinoneto, Andre, apoena, ARAKINIDIO, ariostorecco, arquivo51, Arthas, Bass, bbourbon, berchielli, bozzano, brazucx, C-3PO, cehills, Chassot, Clauber, cleiton_maciel, comolatti, dallari, dariosena, Darth Sidious, David, Deiapinh, diemesleno, Dirceu W. C. Conte, dnakamashi, edsonel, eduzortea, eliasmachado_rj, Erik Patekoski, eXagon, felipe.buarque, fernandodotnet, ffabiano, flaviocc, flaviohssantos, flaviolemos, Flávio Robertgo, fraga, frances135, Francisco_Geraldo, Gabriel Teófilo, Geovanne Duarte, Gnomo, Gomes, guilhermesmo, gusrp, henrique.cardoso, infonlinebr, jackstuard, jaydson, jcorreajr, jgfelix, jhonguitar, jhou, jlucasps, jorgecardoso, José Guilherme, Jota, JRSIQUEIRA, juliherms, jzaires, kidush, klebersilvarocha, konos, laucode, lfalcao, Lincoln, lucasB, lucasmadeira, lucianno, lufreitas, luiz.lago, luizfilipe, marcelochiquinho, marcelosv, Marlosm, mauriciomag, mcroft, mcurtis, mikasjau, mirelli, mmfsndroid, MSPRAFAEL, Nidio Dolfini, nilsgome, nina.rm, nivaldo, nq6, pabarbosa, paint-horse, paulanegreiros, Paulo, persiomotta, Philipe Alves, pmzara, pomarolli, pxcx, Ranieri, rcotonet, renata, rguadagnini, ricardo_listadelphi, rlecheta, rmendes, Roberto, RodReis, ROGÉRIO RODRIGUES, romuloff, rubens_olv, schiroky, shadow, siker C3PO, SirBagda, sobrinho, ThiMatsu, Tiago Sousa Roch, tiasousa, tnarnold, ubiratan, unnamedd, vanmars, VIEIRIX, viniciusgoncalves, wagner_francisco, waideman, washington, Wds, wil, xa:=zin, xikin, yeltsinlima, Yoda e 2 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2013 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi