- Steps to reproduce the problem.
Pre-condition:the threshold of the RecipientEditTextView is set to 1.
Step1: type chars and select a item from the dropdown listitem
Step2: type "," or ";".
- What happened.
The first position item of the previous dropdown list which showing in step1 is submitted to the RecipientEditTextView.
- What you think the correct behavior should be.
The char "," or ";" should be submitted to the RecipiemtnEditTextView.
I think the point is the Threshold of the RecipientEditTextView is set to 1, and the following code snippet is where cause the issue:
private boolean commitChip(int start, int end, Editable editable) {
ListAdapter adapter = getAdapter();
if (adapter != null && adapter.getCount() > 0 && enoughToFilter()
&& end == getSelectionEnd() && !isPhoneQuery()) {
// choose the first entry.
submitItemAtPosition(0);
dismissDropDown();
return true;
} else {
the if condition should be modified like this:
private boolean commitChip(int start, int end, Editable editable) {
ListAdapter adapter = getAdapter();
if (adapter != null && adapter.getCount() > 0 && enoughToFilter()
&& end == getSelectionEnd() && !isPhoneQuery()
/*The dropdown listitem should only be submitted when the PopupWindow is showing.To prevent the below case happening:
When a dropdown listitem has been submitted, and the getThreshold()==1, and the input char is a single COMMIT char,
such as ',' or ';', the first position item of the previous list will be submitted to the EditText */
&& isPopupShowing()) {
// choose the first entry.
submitItemAtPosition(0);
dismissDropDown();
return true;
} else {
https://code.google.com/p/android/issues/detail?id=73076