AutoCompleteTextView不响应对其ArrayAdapter的更改

AutoCompleteTextView不响应对其ArrayAdapter的更改,第1张

AutoCompleteTextView不响应对其ArrayAdapter的更改

ArrayList似乎可以很好地填充,但是无论我使用哪种方法,我似乎都无法使适配器填充数据

您正在反对

AutoCompleTextView
工作原理。当用户开始在输入框中输入字符时,
AutoCompleteTextView
将过滤适配器,并且在发生这种情况时,它将显示下拉列表,其中包含设法通过过滤器请求的值。现在,您已经将设置为
AutoCompleteTextView
在用户每次输入字符时都创建一个线程,问题在于,
AutoCompleteTextview
在适配器实际填充正确的值之前,它将永远不会看到这些值,因为它要求适配器进行过滤。尝试这样的事情:

public static class BlockingAutoCompleteTextView extends        AutoCompleteTextView {    public BlockingAutoCompleteTextView(Context context) {        super(context);    }    @Override    protected void performFiltering(CharSequence text, int keyCode) {        // nothing, block the default auto complete behavior    }}

并获取数据:

public void onTextChanged(CharSequence s, int start, int before, int count) {    if (autoComplete.getThreashold() < s.length()) {        return;    }     queryWebService();}

您需要使用主UI线程并使用适配器的方法来更新数据:

// do the http requests you have in the queryWebService method and when it's time to update the data:runonUiThread(new Runnable() {        @Override    public void run() {        autoCompleteAdapter.clear();        // add the data     for (int i = 0; i < length; i++) {          // do json stuff and add the data          autoCompleteAdapter.add(theNewItem);   }      // trigger a filter on the AutoCompleteTextView to show the popup with the results      autoCompleteAdapter.getFilter().filter(s, autoComplete);    }});

查看上面的代码是否有效。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5565564.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存