2011-04-25 2 views
0

Android 애플리케이션을 개발 중입니다. 내가 한 모든 연락처를 가져 오는거야하지만 난 문제의 더 나은 설명을하지 않고 목록보기ListView에 연락처 추가

package com.jigar.Contact; 

import android.R.integer; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.os.Bundle; 


import android.app.Activity; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

public class ContactStatus extends ListActivity 
{ 
    /** Called when the activity is first created. */ 
    private String contactid; 
    private String name; 
    private String hasphone; 
    private String phonenumber; 
    private String[] dat=new String[10]; 
    private int count=0; 
    private ListView lv; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ContentResolver cr = getContentResolver(); 
     //lv=(ListView)findViewById(R.id.listv); 
     Cursor cur=cr.query(ContactsContract.Contacts.CONTENT_URI, null,null, null,null); 

     while(cur.moveToNext()) 
     { 
      contactid=cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      name=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      dat[count]=name; 
      hasphone=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
      Toast.makeText(this, contactid, 1000).show(); 
      Toast.makeText(this, name, 1000).show(); 
      // dat[count]=name; 
      count++; 
      if(hasphone.equals("1")) 
      { 
       hasphone="true"; 
      } 

      if(Boolean.parseBoolean(hasphone)) 
      { 

       Cursor cphon=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+contactid, null, null); 
       while(cphon.moveToNext()) 
       { 
        phonenumber=cphon.getString(cphon.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        Toast.makeText(this, phonenumber, 1000).show(); 
       } 

      } 

      //lv.setAdapter(new ArrayAdapter<String>(ContactStatus.this,android.R.layout.simple_list_item_1, dat)); 
     } 
     // ArrayAdapter arr=new ArrayAdapter(this,android.R.layout.simple_list_item_1, dat); 
     //setListAdapter(arr); 
    } 
} 
+0

게시 한 코드에 어떤 문제가 있습니까? 어떤 특정한 일을하고 싶지 않은가? –

+0

http://vikasdp.wordpress.com/2011/02/06/custom-android-listview-to-read-phone-contacts/ 도움이되기를 바랍니다 .. –

답변

0

모든 연락처를 추가하는 데 문제가 있습니다, 그것은 도움이 어렵습니다.

그러나은 백그라운드 스레드가 아닌 onCreate에서 모든 연락처 데이터를로드하고있는 것으로 보입니다. 따라서 앱이 응답하지 않을 가능성이 있습니다.

이것이 문제 인 경우 (또는 그렇지 않은 경우에도) 연락처를 백그라운드 스레드로로드하도록 코드를 이동해야합니다. AsyncTask은 이에 대한 가장 간단한 API입니다.

다른 문제가있는 경우, 제공하십시오

  • 또는 당신이 기대하는 일이되지 않는 것을 설명.
  • LogCat 출력
+0

예. 내 응용 프로그램에 모든 연락처를 가져올 것입니다. 하나씩 가져올 수 있지만 목록보기에서 모든 사람을 추가하려고 할 때 메신저 문제가 그래서 내 문제에 대한 코드를 제공하는 plzz sozz plzzz 선생 – Jigar

+0

어떤 코드를 사용하여 listview 채우는? 어댑터를 추가하는 주석 처리 된 코드를 볼 수 있지만 데이터를 추가하는 코드는 없습니다. –