11

Bir AutoCompleteTextView kullanıyorum Uzun bir listeden bir öğe seçmek için kullanıyorum. Kullanıcı sadece listeden önceden belirlenmiş bir öğeyi seçebilmelidir. Kendi eşyalarını girememelidirler.OtomatikCompleteTextView, kullanıcı tarafından düzenlenmiş listeden seçili girişi algıladığında

Listeden yalnızca bir öğe gönderip göndermediğinden emin olmak için, bir boole bayrağını tetiklemek için setOnItemClickListener kullanın. Sorun, boole bayrağı true değerine ayarlandıktan sonra, öğenin seçilen metnini yine de düzenleyebilir. Bunu algılamaya ve boole bayrağını tekrar false olarak ayarlamam gerek. Bunu nasıl yaparım. Ben onKeyDown kullanmak için bir öneri gördüm, ancak bunu nasıl uygulayacağından emin değilim.

cevap

42

dinleyici değiştirdi.

+0

Açılır listeyi, kullanıcı tarafından tüm dizgeyi bu çözüm ile değiştirmekten nasıl ayırabilirsiniz? – foo

1

Birisi metni değiştirdiğinde sürekli olarak geri arama alacak 3 yöntem verecek bir TextWatcher10 uygulayın. Dize büyürse, kullanıcınız yine kendi başına yazıyordur. - bir cazibe gibi çalışır

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) { 

    } 
}); 
-1

Kullanım

AutoCompleteTextView#setOnItemSelectedListener() 

: Metin ekleyebilirsiniz

+0

Bu kod pasajı [bir açıklama dahil] [http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers] sorusunu çözebilirken, yayınınızın kalitesini artırmanıza yardımcı olur. Gelecekte okuyucular için soruyu cevapladığınızı ve bu kişilerin kod önerilerinizin nedenini bilmeyebileceğini unutmayın. –