0

I have made an application which calls the phone's contact list but i want to handle contact name and numbers in my own way.Is there any way i can get the numbers and name in two different arrays? this is my code...one activity and the other two are layouts..I am trying to add text view dynamically to list view but cant manage to ...may be that is why I am not getting both numbers and names to the list view.. kindly help me.its very urgent.. thanks in advance..

package application.test;

import java.util.ArrayList;

import android.app.ListActivity;

import android.os.Bundle;
import android.provider.ContactsContract;
import android.content.Intent;
import android.database.Cursor;

public class TestActivity extends ListActivity{



    private static final int PICK_CONTACT = 0;

    /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
      super.onCreate(savedInstanceState);       
    //content uri provide directory of people
      Intent intentContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 

      startActivityForResult(intentContact, PICK_CONTACT);
    }//onCreate

    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    {

      if (requestCode ==PICK_CONTACT)
      { 
          getContactInfo(intent);               
      }



    }//onActivityResult

    protected void getContactInfo(Intent intent)
    {
String name;
       Cursor cursor =  managedQuery(intent.getData(), null, null, null, null);      
       while (cursor.moveToNext()) 
       {           
           //contains row id
           String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

             name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
         //whether contact list atleast have a single contact or not
           String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

           if ( hasPhone.equalsIgnoreCase("1"))
               hasPhone = "true";
           else
               hasPhone = "false" ;

           if (Boolean.parseBoolean(hasPhone)) 
           {
            Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
            while (phones.moveToNext()) 
            {
              String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            }//end
            phones.close();
           }//end

        cursor.close();
       }//end while 


    }//end method
}//end class........

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<ListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />
<TextView
    android:id="@+id/android:empty"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />
</LinearLayout>........

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:padding="6dip">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="fill_parent">
        <TextView
            android:id="@+id/toptext"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1"
            android:gravity="center_vertical"
        />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1" 
            android:id="@+id/bottomtext"
            android:singleLine="true"
            android:ellipsize="marquee"
        />
    </LinearLayout>
</LinearLayout> .........
prof_jack
  • 2,023
  • 3
  • 18
  • 19

1 Answers1

1

Hope you are able to get the details by querying the Content providers.

If so, once you have got info in your cursor you can add the same to an ArrayList as you need

For Eg:
ArrayList <String> nameList = new ArrayList <String> () ;
ArrayList <Integer> numberList = new ArrayList <Integer> () ;
while ( cur.movenext() ){
    nameList.add ( <get your data from cursor here> ) ;
    numberList.add ( <get your data from cursor here> ) ;
}

// Use the array list as you wish...

Hope this helps

Vinay
  • 2,395
  • 3
  • 30
  • 35