Java 如何在android中使用带查询的TextWatcher?
我制作了一个编辑文本,在其中键入了一些名称 我希望该应用程序每次在我的编辑文本中发生变化时都能执行搜索 我使用了以下代码:Java 如何在android中使用带查询的TextWatcher?,java,android,android-layout,android-edittext,android-textwatcher,Java,Android,Android Layout,Android Edittext,Android Textwatcher,我制作了一个编辑文本,在其中键入了一些名称 我希望该应用程序每次在我的编辑文本中发生变化时都能执行搜索 我使用了以下代码: txt_search.addTextChangedListener( new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public v
txt_search.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) {
query = txt_search.getText().toString();
fetchBooks(query);
}
@Override
public void afterTextChanged(Editable s) {
query = txt_search.getText().toString();
fetchBooks(query);
}
} );
其中fetchBooks
是基于查询在API内部执行搜索的方法
我面临的问题是,有时搜索会受阻。例如,如果我输入得非常快,它只给出前几个字母的结果,而不是最后整个查询的结果
最终,我试图得到的是,应用程序将根据EditText
中的文本不断执行搜索
有没有一种方法可以在不卡住结果的情况下获得它
首先谢谢你:
删除AfterChangedListener的搜索操作代码,因为在EditText中完全输入文本后,您的搜索操作将在ContextChanged listener和afterTextChanged listener上执行
Second替换txt_search.getText().toString()使用's.toString()'
如下更改您的TextWatcher
txt_search.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) {
query = s.toString();
fetchBooks(query);
}
@Override
public void afterTextChanged(Editable s) {
}
} );
有关更多信息,我建议您查看以下链接: