Android TextWatcher仅监视当前输入
我有Android TextWatcher仅监视当前输入,android,android-textwatcher,Android,Android Textwatcher,我有EditText,当用户按下@字母时,它与TextWatcher相连。这将使一个列表视图在特定帖子上显示评论员的姓名。当用户从ListView中选择一个用户时,名称为appendtoEditText,并且ListView被隐藏 但问题是,当用户继续键入ListView时,会再次出现,因为posterextchanged(可编辑的)监视已包含字母@的整个输入文本 有没有办法只监控用户实际输入的内容,而不是整个输入的文本?还是以某种方式逃避TextWatcher中最后输入的单词?或者其他任何关于
EditText
,当用户按下@
字母时,它与TextWatcher
相连。这将使一个列表视图
在特定帖子上显示评论员的姓名。当用户从ListView
中选择一个用户时,名称为append
toEditText
,并且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
是真的
我不这么认为。我将修改这个方法,稍等。我正在考虑为此编写逻辑。但这里有很多事情需要处理。我可以给你写这个。但这里有一个对你有益的图书馆。我建议你使用这个图书馆,如果你想提高东西