如何在安卓中使用带有查询的TextWatcher?



我做了一个EditText,我在里面输入一些名字。

我喜欢该应用程序,每次我的EditText中发生更改时都会执行搜索。

我使用了以下代码:

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中的文本不断执行搜索。

有没有办法在不卡住结果的情况下获得它?

谢谢

首先: 删除AfterChanged Listener的搜索操作代码,因为在 EditText 中输入文本后,您的搜索操作同时在onTextChanged 侦听器和 afterTextChanged侦听器上执行

第二txt_search.getText().toString();替换为's.toString()'

更改您的文本观察器,如下所示

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) {
}
} );

有关更多信息,我建议您查看以下链接:

getText vs onTextChanged charSequence

android 使用文本观察器编辑文本

相关内容

  • 没有找到相关文章

最新更新