Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


AutoCompletar TextView con los contactos

Necesito exhibir una caja de texto auto completa que cargará básicamente los identificadores del email de los contactos. Lo he intentado usar un adaptador de encargo pero nada consigue poblado en el textbox. No hay sugerencias en absoluto. Cualquier solución será muy útil.

    2 Solutions collect form web for “AutoCompletar TextView con los contactos”

    Pruebe lo siguiente:

    ArrayList<String> emailAddressCollection = new ArrayList<String>(); ContentResolver cr = getContentResolver(); Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, null, null, null); while (emailCur.moveToNext()) { String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); emailAddressCollection.add(email); } emailCur.close(); String[] emailAddresses = new String[emailAddressCollection.size()]; emailAddressCollection.toArray(emailAddresses); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, emailAddresses); AutoCompleteTextView textView = (AutoCompleteTextView)findViewById(R.id.YOUR_TEXT_VIEW); textView.setAdapter(adapter); } 

    Nota: No olvide añadir el permiso READ_CONTACTS a su Manifest.xml:

     <uses-permission android:name="android.permission.READ_CONTACTS" /> 

    @Korhan seguramente es una forma mucho más elegante de lo que imaginé. Mi código funciona, pero @ Korhan es mucho más simple.Gracias. He creado esta clase de adaptador personalizado para leer los contactos

     class ContactListAdapter extends CursorAdapter implements Filterable { private ContentResolver mCR; public ContactListAdapter(Context context, Cursor c,boolean a) { super(context, c, true); mCR = context.getContentResolver(); } @Override public void bindView(View view, Context context, Cursor cursor) { ((TextView) view).setText(cursor.getString(1)); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { final LayoutInflater inflater = LayoutInflater.from(context); final TextView view = (TextView) inflater.inflate( android.R.layout.simple_dropdown_item_1line, parent, false); view.setText(cursor.getString(1)); return view; } @Override public String convertToString(Cursor cursor) { return cursor.getString(1); } public Cursor runQueryOnBackgroundThread(CharSequence constraint) { if (getFilterQueryProvider() != null) { return getFilterQueryProvider().runQuery(constraint); } StringBuilder buffer = null; String[] args = null; if (constraint != null) { buffer = new StringBuilder(); buffer.append("UPPER("); buffer.append(ContactsContract.CommonDataKinds.Email.ADDRESS); buffer.append(") GLOB ?"); args = new String[] { constraint.toString().toUpperCase() + "*" }; } return mCR.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,CreateEventActivity.PEOPLE_PROJECTION ,buffer == null ? null : buffer.toString(), args, null); } } 

    Y la actividad principal:

     MultiAutoCompleteTextView act = (MultiAutoCompleteTextView)findViewById(R.id.attende_list); ContentResolver content = getContentResolver(); Cursor cursor = content.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,PEOPLE_PROJECTION, null, null, null); ContactListAdapter adapter = new ContactListAdapter(this, cursor, true); act.setThreshold(0); act.setAdapter(adapter); act.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); 
      FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.