ListView - Pesquisa
Boa noite!
Uma outra coisa que pode ser feita com a listagem, é colocar um EditText no layout, para que os itens possam ser achados mais facilmente quando a lista é muito grande.
Para isso, é preciso que o arquivo main.xml seja alterado, ficando desta forma:
Agora, nossa aplicação deixa de extender ListActivity e passa a extender a Activity, conforme abaixo:
Foi adicionado a função Pesquisar(), que é responsável por verificar a lista e retornar somente os valores que coincidirem com o que estiver sendo digitado.
Bom, acho que este post ficou bem comentado no código já.
Tem também a função addTextChangedListener junto com o TextWatcher. É aí que é verificado quando alguma coisa é digitada no EditText, e sempre que isso acontece, é chamada a função de pesquisar que, por sua vez, atualiza a lista sempre que algum caracter for digitado.
E este é o resultado do app acima:
Até o próximo post e qualquer dúvida é só postar aí!
Clique aqui para baixar este projeto.
Uma outra coisa que pode ser feita com a listagem, é colocar um EditText no layout, para que os itens possam ser achados mais facilmente quando a lista é muito grande.
Para isso, é preciso que o arquivo main.xml seja alterado, ficando desta forma:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <EditText android:id="@+id/eText" android:hint="Pesquisar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" /> <ListView android:id="@+id/lView" android:layout_below="@id/eText" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout>
Agora, nossa aplicação deixa de extender ListActivity e passa a extender a Activity, conforme abaixo:
package br.com.blogspot.androidandrekunde.listview; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; public class MainActivity extends Activity { private String[] lstFrutas; private ListView lView; private EditText eText; private ArrayList<String> pesquisa = new ArrayList<String>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Declarando os objetos do main.xml lView = (ListView) findViewById(R.id.lView); eText = (EditText) findViewById(R.id.eText); lstFrutas = new String[] { "Abacate", "Abacaxi", "Banana", "Carambola", "Goiaba", "Jabuticaba", "Laranja", "Maçã", "Melancia", "Morango" }; lView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lstFrutas)); // Função responsável pela pesquisa Pesquisar(); eText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { Pesquisar(); lView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, pesquisa)); } }); } public void Pesquisar() { int textlength = eText.getText().length(); pesquisa.clear(); for (int i = 0; i < lstFrutas.length; i++ ) { if (textlength <= lstFrutas[i].length()) { if (eText.getText().toString().equalsIgnoreCase((String)lstFrutas[i].subSequence(0, textlength))) { pesquisa.add(lstFrutas[i]); } } } } }
Foi adicionado a função Pesquisar(), que é responsável por verificar a lista e retornar somente os valores que coincidirem com o que estiver sendo digitado.
Bom, acho que este post ficou bem comentado no código já.
Tem também a função addTextChangedListener junto com o TextWatcher. É aí que é verificado quando alguma coisa é digitada no EditText, e sempre que isso acontece, é chamada a função de pesquisar que, por sua vez, atualiza a lista sempre que algum caracter for digitado.
E este é o resultado do app acima:
Até o próximo post e qualquer dúvida é só postar aí!
Clique aqui para baixar este projeto.
Olá, belos tutos... tem me ajudado bastante.... mas estou tentando implementar essa busca em um ListView populado com dados do SQLite.... basicamento o método que me retorna td e este.
ResponderExcluirpublic List ConsultarProcurados() {
List lstAgenda = new ArrayList();
//Consulta para trazer todos os dados da tabela Agenda ordenados pela coluna Nome
Cursor cursor = database.query(BaseDAO.TBL_AGENDA, colunas,
null, null, null, null, BaseDAO.AGENDA_NOME);
cursor.moveToFirst();
int textLength = newsFeedActivity.et.length();
while (!cursor.isAfterLast()) {
ContatoVO lContatoVO = cursorToContato(cursor);
lstAgenda.add(lContatoVO);
cursor.moveToNext();
}
cursor.close();
return lstAgenda;
}
Como consultar somente os nomes Iguais ao de um Edittext ? vc pod eme ajudar ?
Muito obrigado Wesley!!
ExcluirDesculpe pela demora, tenho andado meio corrido....
Olha, ainda não fiz esse tipo de consulta, mas imagino que de para fazer o seguinte, cada vez que o usuário digitar uma letra, o app faz uma consulta no banco, como: "SELECT NOME_CAMPO FROM NOME_TABELA WHERE NOME_CAMPO CONTAINING 'letra'"
e depois da consulta seria só reiniciar o cursor da lista.
Não sei se ajudei muito... mas to tentando fazer um exemplo para postar aqui no blog, assim que der um tempo eu posto.
Oláá! Fiz o tutorial mas em vez de aparecer as frutas na tela aparece "Item 1", "Item2" ....
ResponderExcluirGostaria de ajuda!
Obg
Boa noite!
Excluir1º você criou a lista conforme o xml?
2º o ArrayList pesquisa está declarado? Está sendo aplicado no ListView dentro do método onTextChanged?
Bom, de qualquer forma, estou atualizando a postagem com um link para baixar o projeto... aí você pode rodar aí e comparar melhor com o que você fez!
Como faço para, após uma pesquisa, eu clicar no item da listView(o item que pesquisei) e ele ir pra outra activity?
ResponderExcluirObrigada
Como faço para, após realizar a pesquisa, eu clicar no item da list View(o item pesquisado) e ele direcionar para outra activity???
ResponderExcluirObrigada