Search code examples
javaandroidandroid-studioandroid-textinputlayoutonitemselectedlistener

AutoCompleteTextView Item selection trigger event


I want an error on TextInputLayout to be disabled when an item is selected from AutoCompleteTextView

This is googles documentation on AdapterView.OnItemClickListener. https://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener

In my fragment onCreateView method i have

View view = inflater.inflate(R.layout.fragment_currency_picker, container, false);

TextInputLayout mtextInputLayout= view.findViewById(R.id.currencyTIL);

List<String> currenciesAvailable = Arrays.asList(getResources().getStringArray(R.array.currencies_array));

ArrayAdapter adapter = new ArrayAdapter(getContext(), R.layout.dropdown_currency_item, currenciesAvailable);

AutoCompleteTextView autoComplete = view.findViewById(R.id.AutoCompTxtView);
    
autoComplete.setAdapter(adapter);

autoComplete.setOnItemSelectedListener(this);

In my fragment I've also implemented

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Log.d("TEST", "XYZ");
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}

I can't seem to trigger onItemSelected. Ultimately I want to call

mtextInputLayout.setErrorEnabled(false);


Solution

  • When you click on an item on the adapter it is not a Selection but a click event

    use this to remove the Error when the items are clicked by adding mtextInputLayout.setError(null) on the click listener:

    autoComplete.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            mtextInputLayout.setError(null);
        }
    });