मेरे पास मेरी स्क्रीन पर एक स्वत: पूर्ण टेक्स्ट व्यू है। डिफ़ॉल्ट रूप से, जब उपयोगकर्ता स्वत: पूर्ण टेक्स्टव्यू के ड्रॉपडाउन आइटम के किसी आइटम पर क्लिक करता है, तो यह इस स्वत: पूर्ण टेक्स्टव्यू के टेक्स्ट को इस चुने हुए आइटम मान पर सेट करता है।

क्या इसे अक्षम करने का कोई तरीका है? तो जब उपयोगकर्ता ड्रॉपडाउन आइटम पर क्लिक करता है, केवल onItemClickListener ट्रिगर होता है?

onItemClickListener में मान को "" पर सेट करना कोई विकल्प नहीं है।

autoCompleteTextView.setOnItemClickListener { adapterView, view, i, l -> 
    autoCompleteTextView.setText("")
}

चूंकि मुझे अपने TextWatcher को ट्रिगर नहीं करने की आवश्यकता है

4
Dannie 22 अक्टूबर 2018, 17:37

1 उत्तर

सबसे बढ़िया उत्तर

AutoCompleteTextView इस वर्ग का उपयोग इसके ड्रॉपडाउन पर क्लिक का पता लगाने के लिए करता है:

private class DropDownItemClickListener implements AdapterView.OnItemClickListener {
    public void onItemClick(AdapterView parent, View v, int position, long id) {
        performCompletion(v, position, id);
    }
}

उस performCompletion() विधि के अंदर, टेक्स्ट व्यू की सामग्री को वास्तव में बदलने के लिए यह कॉल है:

replaceText(convertSelectionToString(selectedItem));

यह replaceText() विधि protected है, जिसका अर्थ है कि आप AutoCompleteTextView का उपवर्ग बना सकते हैं और कुछ न करने के लिए इसे ओवरराइड कर सकते हैं:

public class MyAutoCompleteTextView extends AppCompatAutoCompleteTextView {

    public MyAutoCompleteTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void replaceText(CharSequence text) {
        // do nothing
    }
}

अब बस अपने <AutoCompleteTextView> टैग को <com.example.yourprojecthere.MyAutoCompleteTextView> टैग से बदलें और आप पूरी तरह तैयार हो जाएं।

7
Ben P. 22 अक्टूबर 2018, 14:57