Автоматическое завершение просмотра текста работает только для первого набранного символа и затем останавливается - PullRequest
0 голосов
/ 19 марта 2019

Так что я использую средство просмотра текста, чтобы показать предложения пользователей по тегам.В настоящее время я использую фиктивный список тегов.Когда пользователь начинает печатать, код должен создать еще один список тегов, представляющих собой объекты первого списка, отфильтрованные на основе того, содержат ли они последовательность символов, набираемую пользователем в данный момент.

Это прекрасно работает дляпервый символ, но, поскольку пользователь продолжает печатать, список больше не меняется.

Это мой код:

 val tags = listOf(
        "John Smith",
        "Kate Eckhart",
        "Emily Sun",
        "Frodo Baggins",
        "Yanay Zabary",
        "Sze Lok Ho",
        "Jesse Albright",
        "Shayna something",
        "Makena Lawrence"
    )

        questionTagsInput.addTextChangedListener(object : TextWatcher {
        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {

            val userInput = s.toString()

            if (userInput == "") {
                tagSuggestionRecycler.visibility = View.GONE
                tagsFiltredAdapter.clear()


            } else {
                val relevantTags: List<String> = tags.filter { it.contains(userInput) }

                for (t in relevantTags) {
                    tagSuggestionRecycler.visibility = View.VISIBLE
                    tagsFiltredAdapter.add(SingleTagSuggestion(t))
                }

            }

        }


        override fun afterTextChanged(s: Editable?) {
        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
        }

    })

1 Ответ

2 голосов
/ 19 марта 2019

Вам нужно очистить tagsFiltredAdapter в каждом вызове onTextChanged.
В настоящее время при вводе первого символа ваш отфильтрованный список содержит правильные результаты, а при вводе большего количества символов размер списка должен уменьшаться, чтобы соответствовать новым символам. Вместо этого вы просто добавляете элементы в список.

...