Comment limiter la suppression déroulante AutoCompleteTextView?

Je travaille sur un AutoCompleteTextView . J'obtiens des résultats lorsque les utilisateurs saisissent le AutoCompleteTextView et ceux-ci sont obligatoires pour sélectionner. Mais le problème est que le menu déroulant rejette automatiquement en cliquant sur n'importe où dans le serveur. Je veux éviter cela. Y a-t-il une façon d'y parvenir?

Merci.

  • Comment détecter si le mode d'action présente déjà
  • Bibliothèque Advanced RecyclerView - exemples de code
  • 2 Solutions collect form web for “Comment limiter la suppression déroulante AutoCompleteTextView?”

    Essayez le code ci-dessous.

    J'utilise le AutoCompleteText pour compléter automatiquement l'emplacement où l'utilisateur est actuellement, la locationList n'est rien qu'un tableau que j'ai écrit dans le fichier strings.xml, alors utilisez votre propre chaîne de caractères ici.

      locationList = res.getStringArray(R.array.ticketLocation); ArrayAdapter<String> locationAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, locationList); AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.txtCountries); textView.setThreshold(1); textView.setAdapter(locationAdapter); textView.setValidator(new Validator()); textView.setOnFocusChangeListener(new FocusListener()); textView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub TextView ticketLocation = (TextView) view; getTicketLocation = ticketLocation.getText().toString(); } }); 

    Et ci-dessous est le code pour valider l'entrée de texte dans le champ de localisation, la méthode fixText () empêche l'utilisateur de taper du texte qui n'existe pas dans votre chaîne de caractères, par exemple: si l'utilisateur tape "germany" qui n'existe pas Votre liste de matrices de chaînes, elle sera remplacée par "" qui est une chaîne vide dans votre champ de saisie edittext

      class Validator implements AutoCompleteTextView.Validator { @Override public boolean isValid(CharSequence text) { // Log.v("Test", "Checking if valid: " + text); Arrays.sort(locationList); if (Arrays.binarySearch(locationList, text.toString()) > 0) { return true; } return false; } @Override public CharSequence fixText(CharSequence invalidText) { // Log.v("Test", "Returning fixed text"); /* * I'm just returning an empty string here, so the field will be * blanked, but you could put any kind of action here, like popping * up a dialog? * * Whatever value you return here must be in the list of valid * words. */ return ""; } } class FocusListener implements View.OnFocusChangeListener { @Override public void onFocusChange(View v, boolean hasFocus) { // Log.v("Test", "Focus changed"); if (v.getId() == R.id.txtCountries && !hasFocus) { // Log.v("Test", "Performing validation"); ((AutoCompleteTextView) v).performValidation(); } } } 
     private boolean setForceIgnoreOutsideTouchWithReflexion(boolean forceIgnoreOutsideTouch) { try { Method method = android.widget.AutoCompleteTextView.class.getMethod("setForceIgnoreOutsideTouch", boolean.class); method.invoke(this, forceIgnoreOutsideTouch); return true; } catch (Exception e) { return false; } } 

    Seule la réflexion dans public class CustomAutoCompleteTextView extends AutoCompleteTextView , mais – peut-être que ce n'est pas une bonne solution aussi

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.