如何在TextWatcher Android中检测当前光标位置的变化?

时间:2015-09-28 08:58:42

标签: android textwatcher

在我的应用中,用户可以在#中输入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) {
        }
    };

0 个答案:

没有答案