Android ListView ile anlık arama - TextWatcher
ad area

Global alanda blogs adında ArrayList<BlogModel> tipinde bir nesne üretip içini .add() metodu ile değerleri doldurdum.

Activity OnCreate Methodu yada Fragment OnCreateView methodları içerisinde aşağıdaki kodları yazabilirsiniz.

etBlogSearch = findViewById(R.id.etBlogSearch);
etBlogSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
final String sorgu = charSequence.toString().toLowerCase().trim();
final ArrayList<BlogModel> geciciListe = new ArrayList<>();

for(int k=0; k<blogs.size(); k++){
if(blogs.get(k).getBlogSeoTitle().toLowerCase().contains(sorgu)){
geciciListe.add(blogs.get(k));
}
}

ListviewBlogAdapter adapter = new ListviewBlogAdapter(getActivity(),geciciListe);
listBlogs.setAdapter(adapter);
adapter.notifyDataSetChanged();
}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void afterTextChanged(Editable editable) {

}
});

Mantığı anlatacak olursak; blogs arraylist'inin içerisi dolu olduğunu düşünüyoruz. Asıl arama işlemini bu esnada yapacağız. EditText'in TextWatcher metodu arama işlemini yapabilmemize olanak tanıyor. Aslında TextWatcher metodu bir yazının değişip değişmediğini tetiklemek için kullanılan bir event'i temsil eden metodumuz.

beforeTextWatcher içerisine yazmış olduğumuz ArrayList'in görevi aramak istediğiniz kelimeyi orijinal ArrayList'in içerisinde bulursa, oluşturulan ikinci ArrayList'in içerisine kopyalıyor böylelikle ListView'in adapterini oluşturduğunuz ikinci ArrayList ile dolduruyorsunuz. Not: Aynı işlemi RecyclerView'da da kullanabilirsiniz.

Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın