- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何正确使用编辑文本更改监听器android?我知道这对你们中的一些人来说听起来有点容易,但我一直被这个问题困扰。我曾经在我的应用程序中编辑有关我的搜索功能的文本更改监听器。然后我使用过滤器根据用户输入进行过滤。例如,用户输入 ka 和 karl,kamille 将被建议进入列表。首先,我将 recyclerview 可见性设置为 false,以便在启动时 recyclerview 不可见,并且仅当 edittext 不为空或者我应该说用户已经输入时它才可见。我已经这样做了,如果用户输入任何单个字符,recyclerview 将变得可见,但之后它就保持不变。我希望如果编辑文本为空,回收器 View 将再次变得不可见。
这是我的应用程序中有关编辑文本更改监听器的代码。
searchusersedittext.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(searchusersedittext!=null) {
recyclerViews.setVisibility(View.VISIBLE);
filter(s.toString());
}
else if(searchusersedittext.equals("")){
recyclerViews.setVisibility(View.INVISIBLE);
}
else if(searchusersedittext==null){
recyclerViews.setVisibility(View.INVISIBLE);
}
else{
recyclerViews.setVisibility(View.INVISIBLE);
}
}
});
不对吗?或者我错过了什么?
最佳答案
它保持可见,因为 searchusersedittext
在该调用中始终为非空(如果为空,则之前对 searchusersedittext.addTextChangedListener
的调用将失败,并显示 NullPointerException
),因此一旦您键入任何内容,它每次都只会进入第一种情况(保持其可见)。
此外,searchusersedittext.equals("")
不会检查 EditText 中的空条目,因为 searchusersedittext
是一个 EditText 对象,而不是输入的字符串。即使没有在其中输入任何文本,EditText 对象仍然存在。
尝试这样的事情:
@Override
public void afterTextChanged(Editable s) {
String txt = searchusersedittext.getText().toString();
// or String txt = s.toString();
if( !txt.isEmpty() ) {
recyclerViews.setVisibility(View.VISIBLE);
filter(txt);
}
else {
recyclerViews.setVisibility(View.INVISIBLE);
}
}
关于java - 如何在android中正确使用编辑文本更改监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51330154/
我是一名优秀的程序员,十分优秀!