Commit 76158975 authored by Mygod's avatar Mygod Committed by Max Lv

Prevent creating excessive filters

parent 9c1da29b
......@@ -146,19 +146,15 @@ class AppManager : AppCompatActivity() {
AppViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.layout_apps_item, parent, false))
override fun getItemCount(): Int = filteredApps.size
override fun getFilter(): Filter {
return object : Filter() {
override fun performFiltering(constraint: CharSequence): FilterResults {
private val filterImpl = object : Filter() {
override fun performFiltering(constraint: CharSequence) = FilterResults().apply {
val filteredApps = if (constraint.isEmpty()) apps else apps.filter {
it.name.contains(constraint, true) ||
it.packageName.contains(constraint, true) ||
it.uid.toString().contains(constraint)
}
return FilterResults().also {
it.count = filteredApps.size
it.values = filteredApps
}
count = filteredApps.size
values = filteredApps
}
override fun publishResults(constraint: CharSequence, results: FilterResults) {
......@@ -167,7 +163,7 @@ class AppManager : AppCompatActivity() {
notifyDataSetChanged()
}
}
}
override fun getFilter(): Filter = filterImpl
}
private val proxiedUids = SparseBooleanArray()
......@@ -206,14 +202,7 @@ class AppManager : AppCompatActivity() {
loading.crossFadeFrom(list)
val adapter = list.adapter as AppsAdapter
withContext(Dispatchers.IO) { adapter.reload() }
val queryText = search.query
if (queryText.isNullOrEmpty()) {
adapter.notifyDataSetChanged()
} else {
adapter.filter.filter(queryText)
}
adapter.filter.filter(search.query)
list.crossFadeFrom(loading)
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment