1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

AutoCompleteTextView alle Kontakte

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von MetBo, 29.09.2010.

  1. MetBo, 29.09.2010 #1
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    Hallo,

    ich benutze eine AutoCompleteTextView um bei Eingabe den Kontakt unter Kontakte zu suchen und ggf. die Eingabedaten zu vervollständigen.

    Aufruf:
    Code:
    mTxtEmpfaenger = (AutoCompleteTextView) findViewById(R.id.txtEmpfaenger);  
    ArrayAdapter<String> contacts = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, getAlleKontaktTeleNr());
    mTxtEmpfaenger.setAdapter(contacts);
    Funktion getAlleKontaktTeleNr:
    Code:
    private List<String> getAlleKontaktTeleNr() {
        	List<String> contacts = new ArrayList<String>();
        	ContentResolver cr = getContentResolver();
            Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
            
            if (cursor.getCount() > 0) {
            	while (cursor.moveToNext()) {
            		String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
        			String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        			
        			if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
        	            Cursor pCursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        	            						null, 
    	            							ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
                								new String[]{contactId}, null);
        	 	        
        	            while (pCursor.moveToNext()) {
        	            	String phoneNumber = pCursor.getString(pCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        	            	System.out.println(phoneNumber + displayName);
        	            	
        	            	contacts.add(phoneNumber + " (" + displayName + ")");
        	 	        } 
        	            
        	 	        pCursor.close();
        	 	    }
                }
            }
        	
        	return contacts;
        }
    Der Code funktioniert in der Hinsicht, dass wenn ich die Telefonnummer eingebe, dass dann der Kontakt gefunden wird, aber nicht anders herum.

    Mein Problem: Ich möchte, dass der Benutzer den Namen des Kontaktes eingibt und im DropDown steht der Kontaktname + Telenr. Beim Anklicken der Dropdown erscheint aber nur die Telenr des Kontaktes in dem Textfeld und nicht Name+Nr.

    Was muss ich ändern, damit ich die Lösung bekomme?


    Danke
     
  2. BenOtto, 29.09.2010 #2
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    15
    Registriert seit:
    30.08.2010
    Also ich hab deinen Code mal ausprobiert. Bei mir werden auch die Kontaktnamen angezeigt. Und wenn du zwischen Klammer und dem Namen noch ein Leerzeichen machst, dann funktioniert auch die Suche.
     
    MetBo bedankt sich.
  3. MetBo, 29.09.2010 #3
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    Ah ... so einfach geht es, danke dir! Manchmal blickt man durch seinen eigenen Code nicht mehr durch ... nach 6 Stunden proggen .... ^^
     

Diese Seite empfehlen