2011-04-25 133 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

您在发布的代码时遇到的具体问题是什么?你不想做什么具体的事情呢? – 2011-04-25 06:45:56

+0

请参阅http://vikasdp.wordpress.com/2011/02/06/custom-android-listview-to-read-phone-contacts/希望它可以帮助你.. – 2011-04-25 07:29:23

回答

0

没有问题的一个更好的描述,这是很难帮助。

但是,它似乎是加载onCreate而不是后台线程中的所有联系人数据,所以应用程序可能会因无响应而终止。

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

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

  • 的是什么,或者没有发生您期望的描述。
  • LogCat输出
+0

是的先生我要去取我的应用程序中的所有联系人我可以一个一个地读取,但是当我尝试添加所有那些在listview即时通讯中遇到麻烦,所以plzz为我的问题提供代码sooo plzzz sir – Jigar 2011-04-25 07:13:49

+0

你用什么代码来填充listview?我可以看到添加适配器的注释代码,但是没有代码可以向其添加数据。 – 2011-04-25 07:31:26