我正在开发一个Android应用程序。我的布局中有一个自动填页。我想用服务器的建议填充此文本视图。服务器上大约有400个关键字,它们将在不久的将来增加,因此我无法一次解析所有标签,然后检查建议。 AutoCompleteTextView应该更像是Google搜索,这样我才能在用户输入某些内容并在UI线程上进行解析时解析。

但是我在这里无法触发该解析器,因为我无法获得该回调方法,也可能是感觉用户已输入某些内容或可能被编辑一些文本的事件。

setonEditorActionListener 仅当用户按软键盘上的Enter按钮时工作。

提前致谢

有帮助吗?

解决方案

您也可以使用过滤器接口来实现此功能。事实证明filter.performfiltering()仅出于此类目的而调用UI线程。这是我用来这样做的一些代码:

        Filter filter = new Filter() {

        @Override
        public CharSequence convertResultToString(Object resultValue) {
            return resultValue.toString();
        }

        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
            if( charSequence == null ) return null;
            try {
                // This call hits the server with the name I'm looking for and parses the JSON returned for the first 25 results
                PagedResult results = searchByName( charSequence.toString(), 1, 25, true);
                FilterResults filterResults = new FilterResults();
                filterResults.values = results.getResults();
                filterResults.count = results.getResults().size();
                return filterResults;
            } catch (JSONException e) {
                return new FilterResults();
            }
        }

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
            if( filterResults != null ) {
                adapter.clear();
                adapter.addAll( (List<MyObject>)filterResults.values );
            }
        }
    };

然后使用过滤器:

    private AutoCompleteTextView beverageName;
    ...

    beverageName = findViewById( R.id.beverageName );
    ListAdapter adapter = ...
    adapter.setFilter(filter);
    beverageName.setAdapter(adapter);

其他提示

您可以使用 TextWatcher 每当用户在EditText视图中更改文本时,接口要执行某些操作。只需实现一种或多种TextWatcher的方法,我通常会使用 onTextChanged(). 。希望有帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top