Avoid modifying adapter on a background thread

This commit is contained in:
Naveen
2023-05-13 17:39:49 +05:30
parent eec5547558
commit e69b05c32e

View File

@ -74,30 +74,31 @@ class AutoCompleteTextViewAdapter(
override fun getFilter() = object : Filter() { override fun getFilter() = object : Filter() {
override fun performFiltering(constraint: CharSequence?): FilterResults { override fun performFiltering(constraint: CharSequence?): FilterResults {
val filterResults = FilterResults() val filterResults = FilterResults()
if (constraint != null) { if (constraint != null && autoComplete) {
resultList.clear() val searchString = constraint.toString().normalizeString()
if (autoComplete) { val results = mutableListOf<Contact>()
val searchString = constraint.toString().normalizeString() contacts.forEach {
contacts.forEach { if (it.getNameToDisplay().contains(searchString, true)) {
if (it.getNameToDisplay().contains(searchString, true)) { results.add(it)
resultList.add(it)
}
} }
resultList.sortWith(compareBy<Contact>
{ it.name.startsWith(searchString, true) }.thenBy
{ it.name.contains(searchString, true) })
resultList.reverse()
filterResults.values = resultList
filterResults.count = resultList.size
} }
results.sortWith(compareBy<Contact>
{ it.name.startsWith(searchString, true) }.thenBy
{ it.name.contains(searchString, true) })
results.reverse()
filterResults.values = results
filterResults.count = results.size
} }
return filterResults return filterResults
} }
override fun publishResults(constraint: CharSequence?, results: FilterResults?) { override fun publishResults(constraint: CharSequence?, results: FilterResults?) {
if ((results?.count ?: -1) > 0) { if (results != null && results.count > 0) {
resultList.clear()
@Suppress("UNCHECKED_CAST")
resultList.addAll(results.values as List<Contact>)
notifyDataSetChanged() notifyDataSetChanged()
} else { } else {
notifyDataSetInvalidated() notifyDataSetInvalidated()