Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. private class MyFilter extends Filter {
  2.  
  3. @Override
  4. protected FilterResults performFiltering(CharSequence constraint) {
  5. final FilterResults results = new FilterResults();
  6.  
  7. if (constraint == null || constraint.length() == 0) {
  8. final ArrayList<MyObject> list;
  9. synchronized (adapter) {
  10. list = new ArrayList<>(allObjects);
  11. }
  12. results.values = list;
  13. results.count = list.size();
  14. } else {
  15. final String prefixString = constraint.toString().toLowerCase();
  16.  
  17. final ArrayList<MyObject> values;
  18. synchronized (adapter) {
  19. values = new ArrayList<>(allObjects);
  20. }
  21.  
  22. final int count = values.size();
  23. final ArrayList<MyObject> newValues = new ArrayList<>();
  24.  
  25. for (int i = 0; i < count; i++) {
  26. final MyObject value = values.get(i);
  27. final String valueText = value.firstName.toLowerCase() + " " + value.lastName.toLowerCase();
  28. Log.i("search", valueText);
  29. if (valueText.contains(prefixString)) {
  30. newValues.add(value);
  31. Log.i("search", "in");
  32. }
  33. }
  34. results.values = newValues;
  35. results.count = newValues.size();
  36. }
  37. return results;
  38. }
  39.  
  40. @Override
  41. protected void publishResults(CharSequence constraint, FilterResults results) {
  42. adapter.students = (List<MyObject>) results.values;
  43. if (results.count > 0) {
  44. adapter.notifyDataSetChanged();
  45. } else {
  46. adapter.notifyDataSetInvalidated();
  47. }
  48. }
  49. }
  50.  
  51. @Override
  52. public Filter getFilter(){
  53. return new MyFilter();
  54. }
  55.  
  56. searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
  57. @Override
  58. public boolean onQueryTextSubmit(String query) {
  59. adapter.getFilter().filter(query);
  60. return false;
  61. }
  62.  
  63. @Override
  64. public boolean onQueryTextChange(String query) {
  65. adapter.getFilter().filter(query);
  66. return false;
  67. }
  68. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement