Created
February 25, 2020 13:17
-
-
Save siifii/374d0f8e5657a9949f50ff6b9ee2e975 to your computer and use it in GitHub Desktop.
Filterable & Searchable Recyclerview.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { | |
override fun onQueryTextChange(newText: String): Boolean { | |
adapter.filter.filter(newText) | |
return false | |
} | |
override fun onQueryTextSubmit(query: String): Boolean { | |
return false | |
} | |
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class SubActivityListAdapter : RecyclerView.Adapter<SubActivityListAdapter.ActivityHolder>(), Filterable { | |
var mOriginalArrayList: ArrayList<YourItem> = ArrayList() | |
var mFilteredList: ArrayList<YourItem> = ArrayList() | |
fun addList(items: ArrayList<YourItem>) { | |
this.mOriginalArrayList = items | |
this.mFilteredList = items | |
notifyDataSetChanged() | |
} | |
private fun addFilteredList(items: ArrayList<YourItem>) { | |
mFilteredList = items | |
notifyDataSetChanged() | |
} | |
private val mFiler: Filter = object : Filter() { | |
override fun performFiltering(constraint: CharSequence): FilterResults { | |
val filteredList: ArrayList<YourItem?> = ArrayList() | |
if (constraint.isEmpty()) { | |
filteredList.addAll(mOriginalArrayList) | |
} else { | |
val filterPattern = constraint.toString().toLowerCase().trim { it <= ' ' } | |
for (item in mOriginalArrayList) { | |
if (item.name?.toLowerCase()!!.contains(filterPattern)) { | |
filteredList.add(item) | |
} | |
} | |
} | |
val results = FilterResults() | |
results.values = filteredList | |
return results | |
} | |
override fun publishResults(constraint: CharSequence, results: FilterResults) { | |
addFilteredList(results.values as ArrayList<YourItem>) | |
} | |
} | |
override fun getFilter(): Filter = mFiler | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment