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