AutoCompleteTextField 适配器 getAutofillOptions() 返回 null

问题描述

我正在尝试在表单中实现 AutoCompleteTextField,该表单只接受作为建议列表一部分的输入值,如果不是这种情况,则在提交时设置字段错误

以下是从 HTTP GET 请求到我的本地 Web API 创建和设置 ArrayAdapter 的代码

private void createCompanyAutoComplete(){
    HTTPRequestsHandler.getInstance().volleyGet("companies",new VolleyCallback() {
        @Override
        public void onSuccess(JSONArray response) {
            String[] companyNames = new String[response.length()];
            for (int cnt = 0; cnt < response.length(); cnt++) {
                try {
                    JSONObject currentCompany = response.getJSONObject(cnt);
                    companyNames[cnt] = currentCompany.getString("companyName");
                } catch (JSONException e) {
                    e.printstacktrace();
                }
            }
            AutoCompleteTextView companyAutoComplete = (AutoCompleteTextView) getActivity().findViewById(R.id.companyAutoCompleteTextView);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_list_item_1,companyNames);
            companyAutoComplete.setAdapter(adapter);
        }

        @Override
        public void onError(VolleyError error) {
            Log.e(this.getClass().getCanonicalName(),"Error while fetching companies data. Error: " +error.getMessage());
        }
    });
}

我在页面上使用的 Fragment 的 onCreate 方法调用方法

然后,在 Activity 中,我尝试获取自动填充选项并使用它们使用以下代码验证输入:

 AutoCompleteTextView companiesAutoComplete = (AutoCompleteTextView) findViewById(R.id.companyAutoCompleteTextView);
        String selectedCompany = companiesAutoComplete.getText().toString();
        CharSequence[] companies = companiesAutoComplete.getAdapter().getAutofillOptions();
        boolean companyFlag = false;
        for(int cnt = 0; cnt< companies.length; cnt ++){
            if(companies[cnt].equals(selectedCompany))
                companyFlag = true;
        }

即使设置了适配器并且我在字段内输入时看到了正确的建议, 由于某种原因,从 getAutoFillOptions 返回的公司数组为空。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...