|
Página 1 de 1
|
[ 3 Mensagens ] |
|
[TUTORIAL] ListView parte 4
| Autor |
Mensagem |
|
Marcio_Teixeira
What is Android?
Data de registro: 17 Jul 2011, 21:12 Mensagens: 7
|
 [TUTORIAL] ListView parte 4
Olá, Dando sequência a série sobre ListView, esse que é um dos recursos mais importantes do Android, estamos chegando a parte 4. O exemplo de hoje será mostrado como podemos efetuar uma busca em um listview (search listview), esse recurso é bem interessante quando você já possui uma coleção de dados carregados em seu list e quer efetuar uma busca em cima desta lista. Abaixo segue o fonte utilizado todo comentado para facilitar seu aprendizado: Arquivo consulta.java package br. com. empresa; import java. util. ArrayList; import android. app. Activity; import android. os. Bundle; import android. text. Editable; import android. text. TextWatcher; import android. view. View; import android. widget. AdapterView; import android. widget. ArrayAdapter; import android. widget. EditText; import android. widget. ListView; import android. widget. Toast; import android. widget. AdapterView. OnItemClickListener; public class consulta extends Activity { private ListView lv; private EditText et; private String[] lstEstados; private ArrayList<String> lstEstados_Encontrados = new ArrayList<string> (); @Override public void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView (R. layout. consulta); lv = (ListView) findViewById (R. id. lvEstados); et = (EditText ) findViewById (R. id. etProcurar); lstEstados = new String[] {"São Paulo", "Rio de Janeiro", "Minas Gerais", "Rio Grande do Sul", "Santa Catarina", "Paraná", "Mato Grosso", "Amazonas"}; //Carrega o listview com todos os itens lv. setAdapter(new ArrayAdapter<String> (this, android. R. layout. simple_list_item_1, lstEstados )); CarregarEncontrados (); //Adiciona um TextWatcher ao TextView cujos métodos são chamados sempre //que este TextView sofra alterações. et. addTextChangedListener(new TextWatcher () { public void afterTextChanged (Editable s ) { // Abstract Method of TextWatcher Interface. } public void beforeTextChanged (CharSequence s, int start, int count, int after ) { // Abstract Method of TextWatcher Interface. } //Evento acionado quando o usuário teclar algo //na caixa de texto "Procurar" public void onTextChanged (CharSequence s, int start, int before, int count ) { CarregarEncontrados (); //Carrega o listview com os itens encontrados lv. setAdapter(new ArrayAdapter<String> (consulta. this, android. R. layout. simple_list_item_1, lstEstados_Encontrados )); } }); lv. setOnItemClickListener(new OnItemClickListener () { @Override public void onItemClick (AdapterView arg0, View view, int position, long index ) { Mensagem ("Você clicou no estado : " + lstEstados_Encontrados. get(position ). toString()); } }); } public void CarregarEncontrados () { int textlength = et. getText(). length(); //Limpa o array com os estados encontrados //para poder efetuar nova busca lstEstados_Encontrados. clear(); for (int i = 0; i < lstEstados. length; i++ ) { if (textlength <= lstEstados [i ]. length()) { //Verifica se existe algum item no array original //caso encontre é adicionado no array de encontrados if(et. getText(). toString(). equalsIgnoreCase((String)lstEstados [i ]. subSequence(0, textlength ))) { lstEstados_Encontrados. add(lstEstados [i ]); } } } } private void Mensagem (String msg ) { Toast. makeText (getApplicationContext (), msg, Toast. LENGTH_SHORT). show (); } } Abaixo segue o código fonte do arquivo consulta.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <EditText android:hint="Procurar" android:id="@+id/etProcurar" android:layout_height="wrap_content" android:layout_width="fill_parent"> </EditText> <ListView android:id="@+id/lvEstados" android:layout_height="wrap_content" android:layout_width="fill_parent"> </ListView> </LinearLayout>
O segredo (se é que tem) deste fonte está no evento onTextChanged que é disparado toda vez que o usuário digita alguma coisa na caixa de texto de busca e com isso efetuamos um loop no array de estados e verificamos se oque o usuário digitou existem em algum dos itens, caso tenha adicionamos no array de "encontrados" e em seguida carreamos nosso adapter com esse array de encontrados. Como resultado temos as imagens a seguir, mostrando a tela inicial e quando o usuário digitar alguma coisa na caixa de texto:   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...
|
| 11 Fev 2012, 11:17 |
|
 |
|
fbrigatt
What is Android?
Data de registro: 13 Fev 2012, 20:30 Mensagens: 6
|
 Re: [TUTORIAL] ListView parte 4
Teria como carregar a lista com dados do SQLite?
|
| 12 Ago 2012, 22:21 |
|
 |
|
ByddU
Anatomy of an App
Data de registro: 08 Ago 2011, 15:21 Mensagens: 120 Localização: Ponta Grossa - PR / Blumenau - SC
|
 Re: [TUTORIAL] ListView parte 4
Bem simples a solução, gostei.
|
| 29 Ago 2012, 09:36 |
|
|
|
Página 1 de 1
|
[ 3 Mensagens ] |
|
Quem está online |
Usuários vendo este fórum: adelar, ademilson, adolfo, alansousa, alexandrepom, Alexandrercarvalho, alexmarcolongo, alfredo_ej, andreleitao, AT-AT, augustomig, Berbert, bozzano, Bruno, brunogh, Caique, careisjr, Carlos Almeida, Carmizini, cezaraf, Chaves, christian, ciro, Clone Trooper, craudiao, czambroni, dallari, Damiani Oliveira, Daniel Batista, danielbfranco, Darth Maul, Dassi, debal, Demerval, Diego Rufino, dreyer, du_sr, edsonel, EduardoYC, elisa, eluttner, espinhara.net, Felipe, Felipe Marcondes, Flavio, free_w3000, FVB, garretereis, gedoor, Geire Robson Gadelha, Geovanne Duarte, gutodias, HanNiBaLSeTDf, Henrique Ferraz, Heritrix, Idelto, jacard, jacksaum, jacksonvpj, jairodealmeida, Jalerson, jasn, JeffCF, jefficojava, jlucasps, joaquimfoto, jpespindola, Julio Assis, Juninhooooo, jwv, klassmann, kusanaguy, leanderdulac, leeeeooooooo, lfalcao, lkunta, luciocamilo, marceloaragao, marcelochiquinho, marcosrogel, marinho5, Marini, Matheus562, mauriciobreide, mauriciomag, Mayara Trevisol, Mayron Cimardi, mcurtis, mrkensley, msmdark, Mvitor, mvoto, NeruLL, Nice, nivea, o-raposa, onaiggac, Philipe Alves, polonia, Princesa Léia Organa, pumadeejay, Qui-Gon Jinn, Rafael Felix, Rainha Amidala/Padmé, ramonrabello, ramonsiebra, Ranieri, rbenatti, reginaldo, regisjj, renan.fernandes, renata, Ricardo Chikasawa, Roberto, robertofonte, rocha, Rodrigo, romualdo, romulotales, Samuka, sasuke_sarutobi, Synoo [Bot], tchou, Thiago, thosjanas, Tiago Sousa Roch, Transtago, valaszek, washington, Wds, wender, wilsond, woyzeck, Wryel, wylken e 5 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
|
|