Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中使用带查询的TextWatcher?_Java_Android_Android Layout_Android Edittext_Android Textwatcher - Fatal编程技术网

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 listenerafterTextChanged 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) {

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