在我的应用中,用户可以在#
中输入MultiAutoComplete
,服务器上的建议将显示#
后提供的文字。例如:
用户类型#foo
,服务器返回MultiAutoComplete
文本,例如#food
#football
。
现在一切正常,如果光标位于文本的末尾。正确的方法是获取最后一个字,检测它是否以#
开头并将其发送到服务器。当用户编辑文本并将光标设置在中间的某个位置时,问题就开始了。 TextWatcher
仅检测到最后一个字,因此它看不到更改。
我看到的唯一解决方案是每个字母保存整个文本,并每次比较以查看更改。
你知道任何解决办法吗?
我的TextWatcher
看起来像这样:
TextWatcher tagsWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String tag = getLastTag(s);
if (tag.length() > 0) {
TagServerService.getTags(tag, city, tagListener);
}
}
@Override
public void afterTextChanged(Editable s) {
}
};