Lorem ipsum dolor sit amet, consectetur adipiscing elit. Test link

List View Filter Android

List View Filter Android


public class MyListAdapter extends BaseAdapter implements Filterable {

    private List mData;
    private List mFilteredData;

    public MyListAdapter(List data) {
        mData = data;
        mFilteredData = data;
    }

    @Override
    public Filter getFilter() {
        return new MyFilter();
    }

    @Override
    public int getCount() {
        return mFilteredData.size();
    }

    @Override
    public Object getItem(int position) {
        return mFilteredData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Inflate the view and bind data to it
        ...
        return view;
    }

    private class MyFilter extends Filter {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            String query = constraint.toString().toLowerCase();
            FilterResults results = new FilterResults();
            List filteredList = new ArrayList<>();
            for (MyItem item : mData) {
                if (item.getName().toLowerCase().contains(query)) {
                    filteredList.add(item);
                }
            }
            results.count = filteredList.size();
            results.values = filteredList;
            return results;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            mFilteredData = (List) results.values;
            notifyDataSetChanged();
        }
    }
}

public class MyActivity extends AppCompatActivity {

    private ListView mListView;
    private MyListAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Set up the ListView and adapter
        mListView = findViewById(R.id.list_view);
        mAdapter = new MyListAdapter(getData());
        mListView.setAdapter(mAdapter);

        // Set up the search view widget
        SearchView searchView = findViewById(R.id.search_view);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                mAdapter.getFilter().filter(newText);
                return true;
            }
        });
   

        

Post a Comment