如何解决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 举报,一经查实,本站将立刻删除。