Autosearching option using filter method in recyclerview

前端 未结 2 1996
甜味超标
甜味超标 2021-01-24 06:34

In my app I have implemented a recyclerview with cardview to show the list of the employee inside a company. Now I want to implement a serch option by which user can search with

2条回答
  •  难免孤独
    2021-01-24 07:35

    follow this stpes

    step 1 implements SearchView.OnQueryTextListener in youractivity

    step 2 in onCreateOptionsMenu write below code

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_album_search, menu);
    
        final MenuItem item = menu.findItem(R.id.menu_search_album);
        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
        searchView.setOnQueryTextListener(this);
        return true;
    }
    

    step 3 write this in onQueryTextChange() method

    @Override
    public boolean onQueryTextChange(String newText) {
    
         List filteredModelList = filter(data_fieldses, newText);
    
        if (filteredModelList.size() > 0) {
           //myPhotosAdapter.setFilter(filteredModelList);
            return true;
        } else {
            Toast.makeText(MyPhotosActivity.this, "Not Found", Toast.LENGTH_SHORT).show();
            return false;
        }
    
    }
    

    step 4

        private List filter(List models, String query) {
        query = query.toLowerCase();
    
        final List filteredModelList = new ArrayList<>();
    
        for (MyColleageModel model : models) {
            final String text = model.getImagename().toLowerCase().toString();
            if (text.contains(query)) {
                filteredModelList.add(model);
    
            }
        }
    
          // arraylist in your adapter
        myPhotosAdapter = new MyPhotosAdapter( MyPhotosActivity.this, (ArrayList) filteredModelList);
        recyclerViewMyPhotos.setLayoutManager(new GridLayoutManager(MyPhotosActivity.this, 2));
        recyclerViewMyPhotos.setAdapter(myPhotosAdapter);
        myPhotosAdapter.notifyDataSetChanged();
        return filteredModelList;
    }
    

    ask me in case of any query

提交回复
热议问题