Android Studio Project с использованием kotlin < /p>
Я пытаюсь сделать строку поиска, которая показывает все элементы в списке, в которых вписывается напечатанное сообщение, сортированное по тому, где этот индекс находится в строке. В настоящее время это работает отлично, если сообщение находится в передней части струн, но если оно находится в середине, оно проскальзывает правильные элементы, а затем снова исчезнет. < /P>
xml < /p>
< /code>
kotlin < /p>
FirebaseHelper.getAllUsernames { usernames ->
// Set adapter
binding.editTextSearch.setAdapter(
ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, usernames)
)
// Add text change listener
binding.editTextSearch.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
// Convert input to string
val query = s.toString().trim()
// Filter usernames containing the query
val filtered = usernames.filter { username ->
username.contains(query, ignoreCase = true)
}
//sort by index
val sorted = filtered.sortedBy { username ->
username.indexOf(query, ignoreCase = true)
}
// Update adapter with filtered (or sorted) list
binding.editTextSearch.setAdapter(
ArrayAdapter(this@MainActivity, android.R.layout.simple_dropdown_item_1line, sorted)
)
binding.editTextSearch.showDropDown()
}
override fun afterTextChanged(s: Editable?) {}
})
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... ng-briefly