简体   繁体   中英

How to make search view with modal in Android

I want to make a searchView like this image below. The searchView is received data from local database then it filters data like AutoCompleteTextView . How can i make it?

Here is image:

enter image description here

I use RecyclerView for list display item, and in Adapter I implements a Filterable :

private List<Bank> banksList;
private List<Bank> bankListFiltered;
@Override
public Filter getFilter() {
    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            String charString = constraint.toString();
            if (charString.isEmpty()) {
                bankListFiltered = banksList;
            } else {
                List<Bank> filteredList = new ArrayList<>();
                for (Bank row : banksList) {
                    String shortName = row.getShortName().toLowerCase();
                    if (shortName.contains(charString)) {
                        filteredList.add(row);
                    }
                }

                bankListFiltered = filteredList;
            }

            FilterResults filterResults = new FilterResults();
            filterResults.values = bankListFiltered;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            bankListFiltered = (ArrayList<Bank>) results.values;
            notifyDataSetChanged();
        }
    };
}

@Override
public int getItemCount() {
    return bankListFiltered.size();
}

public BanksAdapter(List<Bank> banksList) {
    this.banksList = banksList;
    this.bankListFiltered = banksList;
}

And in my activity, add event for SearchView:

new SearchView(this).setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {

            return true;
        }

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM