0

J'ai un AutoCompleteTextView qui utilise un SimpleCursorAdapter pour filtrer les courriels pour un champ de saisie. Je l'ai fonctionné, bien qu'il y ait quelques commandes deprecated que je ne suis pas sûr comment retravailler.AutoCompleteTextView avec SimpleCursorAdapter pour les contacts ne renvoyant pas la valeur réelle du curseur

Le seul problème que j'ai est que lorsque je sélectionne une valeur dans la liste fournie, je ne reçois pas l'adresse e-mail sélectionnée, mais quelque chose comme ce qui suit:

[email protected] 

Voici le code que j'ai :

final AutoCompleteTextView edt_Contact = (AutoCompleteTextView)findViewById(idTo); 

    ContentResolver cr = getContentResolver(); 
    String[] projection={ContactsContract.CommonDataKinds.Email._ID,ContactsContract.CommonDataKinds.Email.ADDRESS}; 
    Cursor cursor = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection, null, null, null); 

    startManagingCursor(cursor); 
    String[] from = new String[] { ContactsContract.CommonDataKinds.Email.ADDRESS}; 
    int[] to = new int[] { android.R.id.text1}; 
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to); 

    adapter.setFilterQueryProvider(new FilterQueryProvider() { 
     public Cursor runQuery(CharSequence constraint) { 
      return getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
        new String[] {}, 
        ContactsContract.CommonDataKinds.Email.ADDRESS + " LIKE '%" + constraint + "%'", 
        null, null); 
     } 
    }); 

    edt_Contact.setAdapter(adapter); 

Toutes les suggestions sur la façon d'obtenir la valeur réelle sélectionnée pour remplir le AutoCompleteTextView lorsqu'il est sélectionné?

En outre, comme mentionné, les éléments obsolètes sont startManagingCursor et SimpleCursorAdapter.

Répondre

1

trouvé la solution et je signale ici pour quelqu'un d'autre avec une situation similaire

je avais besoin d'ajouter ce qui suit

adapter.setStringConversion(1); 

je l'ai ajouté juste avant la dernière ligne dans l'exemple ci-dessus. Cela a changé le résultat de la

[email protected]

à l'adresse e-mail sélectionnée.

Juste un heads-up aussi pour toute personne utilisant le MultiAutoCompleteTextView à faire la même chose, ce code fonctionne pour cela aussi ... il suffit de changer ajouter multi avant la AutoCompleteTextView et ajoutez le .setTokenizer de votre choix.