我做了一个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 使用文本观察器编辑文本