将联系人添加到ListView

时间:2011-04-25 06:36:19

标签: android listview contacts android-listview

我正在开发一个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);
    }
}

1 个答案:

答案 0 :(得分:0)

如果没有更好的问题描述,很难提供帮助。

然而,您似乎正在加载onCreate而不是后台线程中的所有联系人数据,因此该应用可能会因为没有响应而被杀死。

如果这是问题(即使不是),您应该移动代码以将联系人加载到后台线程中; AsyncTask是最简单的API。

如果您有其他问题,请提供:

  • 您期望发生或未发生的事情的描述。
  • LogCat输出