Android Textwatcher没有';我认不出空间
我试图过滤一个gridview,为此我在一个editbox中输入数据。它工作得很好,只是当我在editbox中插入空格字符时,它不知何故无法识别它,结果集为空。请帮忙 以下是我的editbox侦听器:Android Textwatcher没有';我认不出空间,android,search,gridview,editbox,Android,Search,Gridview,Editbox,我试图过滤一个gridview,为此我在一个editbox中输入数据。它工作得很好,只是当我在editbox中插入空格字符时,它不知何故无法识别它,结果集为空。请帮忙 以下是我的editbox侦听器: search.addTextChangedListener(new TextWatcher(){ @Override public void afterTextChanged(Editable arg0) {} @Override public void bef
search.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable arg0) {}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {}
@Override
public void onTextChanged(CharSequence cs, int start, int before, int count) {
MainActivity.this.adapter.getFilter().filter(cs);
}
});
我无法解决这个问题,因为它与其他角色配合得很好 将筛选代码移动到
posterextchanged()
方法
例如:
search.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
MainActivity.this.adapter.getFilter().filter(search.getText().toString());
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence cs, int start, int before,
int count) {
// TODO Auto-generated method stub
}
});
尝试使用trim()
。希望它能为您工作。我知道您需要修改此代码。但它可能会给您一些想法
search.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
MainActivity.this.adapter.getFilter().filter(search.getText().toString().trim());
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence cs, int start, int before,
int count) {
// TODO Auto-generated method stub
}
});
如果这不起作用,请尝试第二个选项
search.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable arg0) {
String result = s.toString().replaceAll(" ", "");
if (!s.toString().equals(result)) {
ed.setText(result);
ed.setSelection(result.length());
// alert the user
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence cs, int start, int before,
int count) {
}
});
我更喜欢使用
trim()
的第一个选项,而不是字符串文本。我能够用以下代码解决这个问题:
@Override
public void afterTextChanged(Editable editable) {
String keywords = editable.toString();
if (keywords.length() > 0){
String ultimo = keywords.substring(keywords.length() - 1);
if (ultimo.equals(" ")){
youtubeSearchView.setText(editable.toString() + "\b");
youtubeSearchView.setSelection(keywords.length());
}
}
调用了ContextChanged吗?是的,当我在编辑框中输入文本时,它被调用尝试我的答案你需要为此设置筛选器我尝试了,但我如何将其放入搜索筛选器查看我的编辑它将帮助你如何在适配器中设置自定义筛选器:)按空格仍返回空结果你可以尝试直接从TextView获取文本谢谢谢谢你的帮助。成功了。但是现在它不能识别空格后面的单词。比如说,如果我把“打架童工”放进去,它只会识别打架和打架后的空格,而不会识别小孩。试着在你的编辑文本中添加maxlength。这只是一个建议,对你来说可能不是完美的解决方案。@Zonera你是如何解决你上面评论中列出的问题的?按maxlength?