Android TextWatcher仅监视当前输入

Android TextWatcher仅监视当前输入,android,android-textwatcher,Android,Android Textwatcher,我有EditText,当用户按下@字母时,它与TextWatcher相连。这将使一个列表视图在特定帖子上显示评论员的姓名。当用户从ListView中选择一个用户时,名称为appendtoEditText,并且ListView被隐藏 但问题是,当用户继续键入ListView时,会再次出现,因为posterextchanged(可编辑的)监视已包含字母@的整个输入文本 有没有办法只监控用户实际输入的内容,而不是整个输入的文本?还是以某种方式逃避TextWatcher中最后输入的单词?或者其他任何关于

我有
EditText
,当用户按下
@
字母时,它与
TextWatcher
相连。这将使一个
列表视图
在特定帖子上显示评论员的姓名。当用户从
ListView
中选择一个用户时,名称为
append
to
EditText
,并且
ListView
被隐藏

但问题是,当用户继续键入
ListView
时,会再次出现,因为
posterextchanged(可编辑的)
监视已
包含
字母
@
的整个输入文本

有没有办法只监控用户实际输入的内容,而不是整个输入的文本?还是以某种方式逃避
TextWatcher
中最后输入的单词?或者其他任何关于如何解决这个问题的建议

我在研究,但没有发现任何有用的东西。
提前感谢

实现这一点的方法有很多。这是其中之一。您可以检查您的列表是否已填写

  final boolean isListSet = false;
        public static final String textToFind = "@";
        editText.addTextChangedListener(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) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if (!isListSet && s.toString().contains(textToFind)) {
                    // set your list here
                    isListSet = true;
                }
                if (!s.toString().contains(textToFind)) {
                    // remove your list
                    isListSet = false;
                }
            }
        });

请在问题中键入您的
TextWatcher
代码。这解决了一个问题,但引发了另一个问题。如果用户想输入多个评论员,例如
@John、@Lisa
等,该怎么办?只有在注释中提到更多信息时,此功能才会起作用。
ListView
不会再次出现,因为
isListSet
真的
我不这么认为。我将修改这个方法,稍等。我正在考虑为此编写逻辑。但这里有很多事情需要处理。我可以给你写这个。但这里有一个对你有益的图书馆。我建议你使用这个图书馆,如果你想提高东西