Merhabalar..
Öncelikle arama isminde bir EditText'inin,
liste adında bir ListView'inin
ve adapter isminde bir ArrayAdapter'inin tanımlı olduğunu varsayıyorum..
String sozcukler[] = {"caa", "aab", "dbb", "abc", "abcd",
"abcdd", "ee", "eef"};
bir dizimiz olsun.
liste.setAdapter(adapter);
şeklinde liste'mizin adapter'ini belirledikten sonra sort() metodunu kullanarak adapter'imizi alfabetik bir şekilde sıralıyoruz..
adapter.sort(new Comparator<String>() {
@Override
public int compare(String lhs, String rhs) {
return lhs.compareTo(rhs);
}
});
sıralama işlemini bu şekilde tamamladıktan sonra;
arama nesnemizde herhangi bir değişim olduğunda harekete geçecek yazı dinleyicisini -TextChangedListener()- nesnemize ekliyoruz.
arama.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
//EditText içindeki yazı değiştiğinde neler olacağını bu kısımda belirliyoruz.
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//filtreleme özelliğini belirliyoruz.
MainActivity.this.adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
burada beforeTextChanged() ve afterTextChanged() metodları sırasıyla arama içerisinde yazı değişmeden önce ve sonra yapılacak işlemleri de belirleyebildiğimiz metodlardır.
biz burda onTextChanged() metodunda adapter'imizde bir filter belirleyecek Filtreleme işlemini gerçekleştirmiş oluyoruz...
Kaynak Kodu burdan indirebilirsiniz..