Search code examples
androidlistviewbaseadapter

How to add Search functionality on list view items in listview are from BaseAdapter


I have to add search functionality on Edittext items in listview are coming from baseadapter I am using this code but .getFilter().filter(s.toString()); is not coming

My Code is:

approvedfriendList.setAdapter(new ApprovedList());

            //*********Search Functionality in Approved Friend List************************
            serch_item.addTextChangedListener(new TextWatcher() {

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    // TODO Auto-generated method stub
                //  approvedfriendList.getFilterTouchesWhenObscured().f
                }

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void afterTextChanged(Editable s) {
                    // TODO Auto-generated method stub

                }
            });
    approvedfriendList is ArrayList 

I am not getting how to use here .getFilter().filter(s.toString()); with ApprovedList()(Base Adapter Class )


Solution

  • First you should enable your list view for filtering by adding this line of code :

    list.setTextFilterEnabled(true);
    

    then simply add a text watcher in your text view :

    text.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                  adapter.getFilter().filter( s.toString());
                  list.setAdapter(adapter);
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }
    
            @Override
            public void afterTextChanged(Editable prefix) { 
            }       
    
        });