gpt4 book ai didi

java - 如何在android中正确使用编辑文本更改监听器?

转载 作者:行者123 更新时间:2023-12-02 02:02:43 24 4
gpt4 key购买 nike

如何正确使用编辑文本更改监听器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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com