val autoCompleteAdapter = ArrayAdapter(this,R.layout.simple_dialog_item,data.listOfEncounters)
postInput.threshold = 2
postInput.setAdapter(autoCompleteAdapter)
autoCompleteAdapter.notifyDataSetChanged()
我正在尝试实现这一点:当用户开始使用“ @”显示用户名时,但是... 上面的代码仅在您输入的第一件事是@username时才起作用,否则它将不起作用。它仅在 AutoCompleteTextView 为空时有效。而且我无法添加具有自动完成功能的其他用户名。
编辑:切换到 MultiAutoCompleteTextView 并且有效
我正在使用这样的自定义令牌生成器,而不是逗号令牌生成器
class MyTokenizer:MultiAutoCompleteTextView.Tokenizer{
override fun findTokenStart(text: CharSequence, cursor: Int): Int {
var i = cursor
while (i > 0 && text[i - 1] != ' ' && text[i - 1] != '\n') {
i--
}
while (i < cursor && (text[i] == ' ' || text[i] == '\n')) {
i++
}
return i
}
override fun findTokenEnd(text: CharSequence, cursor: Int): Int {
var i = cursor
val len = text.length
while (i < len) {
if (text[i] == ' ' || text[i] == '\n') {
return i
} else {
i++
}
}
return len
}
override fun terminateToken(text: CharSequence): CharSequence {
var i = text.length
while (i > 0 && (text[i - 1] == ' ' || text[i - 1] == '\n')) {
i--
}
if (i > 0 && (text[i - 1] == ' ' || text[i - 1] == '\n')) {
return text
} else {
if (text is Spanned) {
val sp = SpannableString(text.toString() + " ")
TextUtils.copySpansFrom(text, 0, text.length,
Any::class.java, sp, 0)
return sp
} else {
return text.toString() + " "
}
}
}
}