2012-01-27 2 views
4

연락처 전화 번호에 대해 내 edittext 필드 자동 완성을 사용하고 있습니다. 데이터베이스에서 연락처를 가져와 텍스트 필드에 표시하는 방법을 알고 있지만 사용자가 텍스트 필드에 이름을 입력하려고 할 때 자동 완성을해야합니다. 나는 자동 완성으로 배열을 얻는 방법과 그 뒤에있는 전체 이론을 이해한다. 하지만 전화 연락처에서 끌어 오기는 어렵습니다. 스택 오버플로에 대한 많은 자습서와 다양한 질문을 보았지만, 여전히 난처한 상황입니다. 코드 스 니펫이 도움이 될 것입니다.연락처 전화 번호로 자동 완성 텍스트 뷰 사용

public class MyContacts extends Activity { 

    AutoCompleteTextView txtPhoneNo; 

    public ArrayList<String> c_Name = new ArrayList<String>(); 
    public ArrayList<String> c_Number = new ArrayList<String>(); 
    String[] name_Val = null; 
    String[] phone_Val = null; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     txtPhoneNo = (AutoCompleteTextView) findViewById(R.id.txtPhoneNo); 

    } 

    Uri contacts = Uri.parse("content://icc/adn"); 
    ContentResolver cr = getContentResolver(); 

    Cursor managedCursor1 = cr.query(contacts, null, null, null, null); 
    { 
     if (managedCursor1.moveToFirst()) { 

      String contactname; 
      String cphoneNumber; 

      int nameColumn = managedCursor1.getColumnIndex("name"); 
      int phoneColumn = managedCursor1.getColumnIndex("number"); 

      Log.d("int Name", Integer.toString(nameColumn)); 
      Log.d("int Number", Integer.toString(phoneColumn)); 

      do { 
       // Get the field values 
       contactname = managedCursor1.getString(nameColumn); 
       cphoneNumber = managedCursor1.getString(phoneColumn); 
       if ((contactname != " " || contactname != null) 
         && (cphoneNumber != " " || cphoneNumber != null)) { 

        c_Name.add(contactname); 
        c_Number.add(cphoneNumber); 
       } 

      } while (managedCursor1.moveToNext()); 
     } 
     name_Val = (String[]) c_Name.toArray(new String[c_Name.size()]); 
     phone_Val = (String[]) c_Number.toArray(new String[c_Name.size()]); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_dropdown_item_1line, name_Val); 
     txtPhoneNo.setAdapter(adapter); 
    } 
} 

내 코드 ... 오류를 컴파일하지 않습니다하지만 여전히

+0

나는 무엇을하고 싶은가? – Richa

+0

문자 메시지 –

+0

당신의 문제를 해결했으면 안드로이드 폰의 표준 인 자동 완성 텍스트 뷰와 매우 비슷한 것이 있습니까? 해결하면 답을 게시하고 동의하십시오 ... – nKandel

답변

3

는 연락처를 가져오고 ArrayList에 저장하는 것입니다. 그런 다음 ArrayList를 AutoComplete TextView로 바인딩 할 수 있습니다. 그런 다음 나머지 부분은 사용자가 AutoComplete TextView를 입력 할 때 ArrayList를 필터링하기 쉽습니다.

당신은 contact_namecontact_number의 게터 세터와 POJO 클래스를 만들 수 있습니다

UPDATE. 그런 다음 List<POJO> list = new ArrayList<POJO>();을 만듭니다. 그런 다음 바로 list 사용 POJO 클래스

POJO pojo_obj = new POJO(); 
pojo_obj.setcontact_name(contactname); 
pojo_obj.setcontact_number(cphoneNumber); 
list.add(pojo_obj); 

에 CONTACT_NAME와 contact_number을 추가 그리고 마지막으로 Adapterlist을 설정합니다.

그리고 어댑터 클래스에서 당신은 내가 당신이 SDK에서 테스트 할 생각

list.get(position).getcontact_name(); 
list.get(position).getcontact_number(); 
+0

코드를 게시했습니다. 무슨 뜻인지 나에게 보여줄 수있을 것 같니? –

+0

나는 나의 대답을 편집했다. –

+0

고맙습니다. 시험해보십시오. 나는 여기에 게시하고 작동하는지 알려 주겠다. –

2

그 수는 자동 완성 텍스트 뷰 어댑터로 전화 번호 나 연락처 이름을 공급하기 위해 작동하지 않습니다.

아래 링크는이 요구 사항을 충족하는 데 유용한 자습서를 제공합니다. 더 나은

Fetch Phone contacts and Show it in AutoComplete TextView in Android

+0

코드를 게시했습니다. 여전히 작동하지 않는 것처럼 보이지만 컴파일 오류가 없습니다. –

0

사용하여 텍스트 뷰에 설정할 수 있습니다. SDK에는 SIM 카드가 없으므로 작동하지 않습니다. .APK를 전화기에 넣고 다시 시도하십시오. 그것은 매력처럼 작동해야합니다.

+0

나는 htc 영감에 그것을 테스트 해왔다. 그것은 작동하지 않습니다? 당신이 그것을 시도했을 때/당신을 위해 작동 했습니까? 그것이 당신을 위해 일하면 도움이 될 것입니다. –

+0

내 삼성 갤럭시 3 안드로이드 2.1 나를 위해 일한 예. Btw, 당신은 연락처를 추출하는 더 좋은 방법을 가지고이 웹 페이지를 사용해 볼 수 있습니다 .. [이 링크는 하나님의 일을] (http://coderzheaven.com/2011/06/get-all-details-from-contacts- 안드로이드 /) –

관련 문제