Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save SyedTayyabUlMazhar/14480d2b0180f451e09221a6d047bade to your computer and use it in GitHub Desktop.
Save SyedTayyabUlMazhar/14480d2b0180f451e09221a6d047bade to your computer and use it in GitHub Desktop.
FileBriefDescriptionAdapter(Context context, RecyclerView recyclerView, List<FileBriefDescription> data)
{
this.context = context;
this.fileBriefDescriptions = data;
this.recyclerView = recyclerView;
// fileBriefDescriptionsCopy is only read after this and never changed
this.fileBriefDescriptionsCopy.addAll(fileBriefDescriptions);
}
void filter(String text)
{
fileBriefDescriptions.clear();
if (text.isEmpty())
{
fileBriefDescriptions.addAll(fileBriefDescriptionsCopy);
}
else
{
text = text.toLowerCase();
for (FileBriefDescription item : fileBriefDescriptionsCopy)
{
if (item.getFileName().toLowerCase().startsWith(text))
{
fileBriefDescriptions.add(item);
}
}
}
}
@Override
public boolean onCreateOptionsMenu(final Menu menu)
{
getMenuInflater().inflate(R.menu.library_menu, menu);
final MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextSubmit(String query)
{
adapter.filter(query);
recyclerView.setAdapter(adapter);
return true;
}
@Override
public boolean onQueryTextChange(String newText)
{
adapter.filter(newText);
recyclerView.setAdapter(adapter);
return true;
}
});
searchItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener()
{
@Override
public boolean onMenuItemActionExpand(final MenuItem item)
{
LibraryActivity.this.setMenuItemsVisibility(menu, searchItem, false);
return true;
}
@Override
public boolean onMenuItemActionCollapse(final MenuItem item)
{
LibraryActivity.this.setMenuItemsVisibility(menu, searchItem, true);
return true;
}
});
return super.onCreateOptionsMenu(menu);
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="Search"
app:showAsAction="always|collapseActionView"
app:actionViewClass="androidx.appcompat.widget.SearchView"/>
</menu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment