Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AutoCompleteTextView detect when selected entry from list edited by user

I have an AutoCompleteTextView I use to select an item from a long list. The user should only be able to select a predetermined item from the list. They should not be able to enter their own item.

The way I check to make sure they submit only an item from the list is to use setOnItemClickListener to trigger a boolean flag. The problem is that after the boolean flag is set to true, they can still edit the selected text of the item. I need to detect this and set the boolean flag to false again. How do I do this. I have seen a suggestion to use onKeyDown, but I am not sure how to implement this.

like image 890
Rynardt Avatar asked Mar 12 '13 08:03

Rynardt


2 Answers

You can add text changed listener:

autoCompleteTextView.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {                

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});
like image 173
maszter Avatar answered Nov 13 '22 05:11

maszter


Implement a TextWatcher, which will give you 3 methods which will constantly get call backs when someone changes the text. If the string grows, your user is typing by himself again.

like image 22
Stefan de Bruijn Avatar answered Nov 13 '22 05:11

Stefan de Bruijn