搜索实现

搜索图标的添加

<item
    android:id="@+id/action_search"
    android:icon="?attr/menu_search"
    app:showAsAction="always"
    app:actionViewClass="androidx.appcompat.widget.SearchView"
    android:title="Search"
    />

drawable

添加一个search图标,命名为:

ic_search_black_24dp.xml

styles.xml

添加一句

<item name="menu_search">@drawable/ic_search_black_24dp</item>

搜索功能的实现

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu,menu);//渲染一个menu获取一个对象
    MenuItem mSearch = menu.findItem(R.id.action_search);//定位
    SearchView mSearchView = (SearchView) mSearch.getActionView();//创建一个搜索界面
    mSearchView.setQueryHint("Search");//提示词(灰色透明字)
    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {//对写入的内容进行监听
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            adapter.getFilter().filter(newText);    //Filter筛选器,按照newText搜索
            return false;
        }
    });

    return super.onCreateOptionsMenu(menu);
}

主要添加了这一段

MenuItem mSearch = menu.findItem(R.id.action_search);//定位
    SearchView mSearchView = (SearchView) mSearch.getActionView();//创建一个搜索界面
    mSearchView.setQueryHint("Search");//提示词(灰色透明字)
    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {//对写入的内容进行监听
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }   
@Override
    public boolean onQueryTextChange(String newText) {
        adapter.getFilter().filter(newText);    //Filter筛选器,按照newText搜索
        return false;
    }

效果: