Ketika kita mempunyai data yang sangat banyak dilist, tentunya tidak efektif kalau kita terus menerus Scrolling. Contohnya adalah data kontak kita yang sudah sampai ratusan. Dengan alasan inilah, maka kita perlu membuat fitur pencarian dibagian atas listview. Pencarian di Listview ini dalam istilah teknis adalah Filter.
Rancangan
Untuk tutorial kali ini, kita akan membuat listview sederhana yang akan menampilkan 10 negara asia tenggara. Jika kita mengetikkan misalkan ‘m’ maka hanya akan muncul ‘Myanmar’ dan ‘Malaysia’ secara realtime.

XML layout
Untuk membuat filter list, kita membutuhkan 2 file xml. Yang pertama adalah list_item_filter.xml dan activity_filter.xml. list_item_filter digunakan untuk menampung data per item sedangkan activity_filter dipakai untuk menampung list_item_filter dan EditText pencarian .
list_item_filter
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- Single ListItem -->
<!-- negara list -->
<TextView android:id="@+id/negara_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:textSize="16dip"
android:textStyle="bold"/>
</LinearLayout>
activity_filter.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- Editext for Search -->
<EditText android:id="@+id/inputSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Search Country.."
/>
<!-- List View -->
<ListView
android:id="@+id/list_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
FilterListActivity.java
File ini adalah file java yang tugasnya menampilkan data kelist dan menambahkan fitur filter
package com.listdemo;
import java.util.ArrayList;
import java.util.HashMap;
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 FilterListActivity extends Activity {
// List view
private ListView lv;
// Listview Adapter
ArrayAdapter<String> adapter;
// Search EditText
EditText inputSearch;
// ArrayList for Listview
ArrayList<HashMap<String, String>> negaraList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_filter);
// Data Array yang akan ditampilkan di list
String negara[] = {"Indonesia","Malaysia","Brunei","Filipina",
"Thailand","Myanmar","Singapura","Vietnam",
"Kamboja","Laos" };
// ambil list_view dan inputsearchnya di xml
lv = (ListView) findViewById(R.id.list_view);
inputSearch = (EditText) findViewById(R.id.inputSearch);
// proses menambahkan array kedalam listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item_filter,
R.id.negara_name, negara);
lv.setAdapter(adapter);
/**
* Kode dibawah ini dipakai untuk memfilter/pencarian realtime
* */
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {
FilterListActivity.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
}
}
Tutorial selanjutnya akan membahas onListItemClickListener agar list bisa di klik.

kalau data kita sudah ada di database sqlite, cara untuk menampilkan dan melakukan pencarian nya sendiri dengan HashMap itu gmna ya gan?
bang agar listview bisa di klik gmana caranya tolong kirim source code nya
maaf pak mau tanya , adakah tutorial search untuk JSON ?
JSON itu apa
aku ko gagal ya ? tapi gk ada yang error.. kira” salah dimananya ya mas ?
setelah di masukan kata yang ingin dicara, bagaiman event selanjutnya untuk membuka layout activity yang baru.
contohnya jangan cuma memanggil 1 activity mas, terima kasih
Om, pertanyaan udah bby email :D Hatur nuhun info sharingnya
mas kalo pencariannya dicari data yang ada di database mysql begimana mohon pencerahannya..
mantab banget … makasih