建议存储在ArrayList<String>.
中getSuggestions()
方法会返回String
的正确列表,重点是我用偶然字符替换特殊字符。 I.E.当我输入xeres
时,我希望得到与输入xérès
时相同的结果,这就是发生的事情,但问题是当我输入xérès
时,显示dropdown
,当我输入xeres
时,即使建议变量具有相同的值,它也不会显示...
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 2) {
suggestions = getSuggestions(s.toString());
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), R.layout.dropdown_textview_row, suggestions);
autoTxtSearchPointer.setAdapter(adapter);
}
}
感谢您的帮助! :)
编辑:更准确的代码
autoTxtSearchPointer = new AutoCompleteTextViewCustom(this);
autoTxtSearchPointer.setHint(R.string.search);
autoTxtSearchPointer.setSingleLine();
autoTxtSearchPointer.setImeOptions(EditorInfo.IME_ACTION_DONE);
autoTxtSearchPointer.setLayoutParams(editParams);
autoTxtSearchPointer.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
autoTxtSearchPointer.setThreshold(2);
autoTxtSearchPointer.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) {
if (s.length() > 2) {
suggestions = getSuggestions(s.toString());
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), R.layout.dropdown_textview_row, suggestions);
autoTxtSearchPointer.setAdapter(adapter);
}
}
@Override
public void afterTextChanged(Editable s) {}
});
}
编辑2:是因为我使用了规范器吗?
private String normalize(String str) {
return Normalizer
.normalize(str, Normalizer.Form.NFKD)
.replaceAll("[^\\p{ASCII}]", "");
}
答案 0 :(得分:0)
永远不要将 Edittest
和 onTextChanged
用于此目的。
使用下面的代码:
AutoCompleteTextView text;
text = (AutoCompleteTextView)findViewById(R.id.text);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,your_array_list);
text.setAdapter(adapter);
在 XML
中<AutoCompleteTextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:ems="10"
android:textColor="#000000" />