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.



