2014-12-08 3 views
2

자동 완성 텍스트 뷰를 사용하여 내 연락처에 이메일을 보내고 싶습니다. 나는 현재 같은 문제에 대한 해결책을 찾는 사람들을 위해, 내가 당신에게 완전한 답변이나 아이디어를 줄 수있는 EmailCompletionEditText을 쓴하지만 그것은, 오랜만이야,android 자동 완성 텍스트 뷰에서 이메일 의견 받기

@SuppressWarnings("deprecation") 
    public void PopulatePeopleList() { 

     mPeopleList.clear(); 

     try { 

      Cursor phones = getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
        null, null, null); 

      while (phones.moveToNext()) { 

       String num = phones 
         .getString(phones 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       num = num.replaceAll(" ", ""); 
       String name = phones 
         .getString(phones 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
       String id = phones 
         .getString(phones 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID)); 

       Map<String, String> NamePhoneType = new HashMap<String, String>(); 

       NamePhoneType.put("Name", name); 
       NamePhoneType.put("Phone", num); 
       NamePhoneType.put("Type", id); 
       mPeopleList.add(NamePhoneType); 

       // Add ArrayList names to adapter 

      } 

     } catch (Exception e) { 
      Log.i("AutocompleteContacts", "Exception : " + e); 
     } 

     // startManagingCursor(people); 
    } 
+0

당신은 당신이 당신의 AutoCompleteTextView에 설정하는 코드를 게시 할 수 있습니까? 이 데이터를 어댑터에 넣기 만하면됩니다. –

+0

이 데이터는 autocompleteTextview에서 액세스 할 수 있지만 autocompleteTextView에서 전자 메일 주소를 가져오고 싶습니다. 내 연락처에있는 전자 메일 – Arslan

답변

3

같은 상대의 아이디와 번호를 연락처의 이름을 얻고있다 당신 스스로 솔루션을 작성하십시오. 깨진 링크의 경우

, 나는 여기에 소스 코드를 부착 해요 :

/** 
* Created by Rany Albeg Wein on 24/01/2016. 
*/ 
public class EmailCompletionEditText extends MultiAutoCompleteTextView { 
    private ContentResolver mContentResolver; 

    public EmailCompletionEditText(Context context) { 
     super(context); 
     init(context); 
    } 

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

    public EmailCompletionEditText(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     init(context); 
    } 

    @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    public EmailCompletionEditText(Context context, AttributeSet attrs, int defStyleAttr, 
            int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
     init(context); 
    } 

    private void init(Context context) { 
     mContentResolver = context.getContentResolver(); 

     setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); 

     final String[] from = new String[]{ContactsContract.Contacts.DISPLAY_NAME, 
              ContactsContract.CommonDataKinds.Email.ADDRESS, 
              ContactsContract.Contacts.Photo.PHOTO_URI}; 

     final int[] to = new int[]{R.id.tv_contact_name, 
            R.id.tv_contact_email, 
            R.id.iv_contact_photo}; 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(context, R.layout.contact_row, null, from, to, 0) { 
      @Override 
      public CharSequence convertToString(Cursor cursor) { 

       final int emailIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS); 
       return cursor.getString(emailIndex); 
      } 
     }; 

     adapter.setFilterQueryProvider(new FilterQueryProvider() { 
      @Override 
      public Cursor runQuery(CharSequence constraint) { 
       if (constraint == null) { 
        return null; 
       } 

       String query = constraint.toString(); 

       final String selection = ContactsContract.Contacts.DISPLAY_NAME 
         + " LIKE ? " 
         + " OR " 
         + ContactsContract.CommonDataKinds.Email.ADDRESS 
         + " LIKE ? "; 

       String[] selectionArgs = new String[]{"%" + query + "%" 
         , "%" + query + "%"}; 

       return mContentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, selection, selectionArgs, null); 

      } 
     }); 

     setAdapter(adapter); 
    } 
} 
+1

이 링크는 질문에 대한 대답 일지 모르지만 여기에 대한 답변의 핵심 부분을 포함하고 참고. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 포스트/14458106) – rfornal

+1

그에 따라 편집 됨. 고맙습니다 ! –

관련 문제