mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-06-05 21:59:27 +02:00
Avoid modifying adapter on a background thread
This commit is contained in:
@ -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()
|
||||||
|
Reference in New Issue
Block a user