AutoCompleteTextView下拉没有显示奇怪

时间:2016-05-02 09:42:24

标签: android android-arrayadapter autocompletetextview textwatcher unicode-normalization

建议存储在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}]", "");
}

1 个答案:

答案 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" />