如何从我的Android模拟器中获取正确的联系人姓名,号码和电子邮件到一个数组?

时间:2011-05-25 05:58:52

标签: android

hai all ..          首先,我在每行显示所有联系人的复选框。我将所有联系人详细信息,如姓名和电子邮件发送到一个数组。但我想选择一些联系人,并将这些联系人详细信息放入一个数组。我写了下面的代码它显示了不正确的结果。请帮助我...

package com.android.toggle3;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import android.app.ListActivity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;


public class Toggle4 extends ListActivity 
{
    ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        Cursor mCursor = getContacts();
        startManagingCursor(mCursor);
        // Now create a new list adapter bound to the cursor.
        // SimpleListAdapter is designed for binding to a Cursor.
        ListAdapter adapter = new SimpleCursorAdapter(this, // Context.
                android.R.layout.simple_list_item_multiple_choice, // Specify the row template
                                                        // to use (here, two
                                                        // columns bound to the
                                                        // two retrieved cursor
                                                        // rows).
                mCursor, // Pass in the cursor to bind to.
                // Array of cursor columns to bind to.
                new String[] { ContactsContract.Contacts.DISPLAY_NAME ,
                        ContactsContract.Contacts._ID},
                // Parallel array of which template objects to bind to those
                // columns.
                new int[] { android.R.id.text1, android.R.id.text2 });

        // Bind to our new adapter.
        setListAdapter(adapter);

         final ListView listView = getListView();
            listView.setItemsCanFocus(false);
            listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }

    private Cursor getContacts() 
    {
        // Run query
        Uri uri = ContactsContract.Contacts.CONTENT_URI;
        String[] projection = new String[] { ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME };
        String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
                + ("1") + "'";
        String[] selectionArgs = null;
        String sortOrder = ContactsContract.Contacts.DISPLAY_NAME+ " COLLATE LOCALIZED ASC";

        return managedQuery(uri, projection, selection, selectionArgs,sortOrder);
    }

    protected void onListItemClick(ListView l, View v, int position, long id)
    {
    super.onListItemClick(l, v, position, id);
    long i=getSelectedItemId();
    Log.i("item id", "" +i);
    //here i want to handle the event.and should display the details of that contacts in another screen .
    //Toast.makeText(Toggle3.this,"Item in position " + position + " clicked",Toast.LENGTH_LONG).show();
    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
    if (cur.getCount() > 0) 
    {

    cur.move(position);
        String ids = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
        String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        list.add(new BasicNameValuePair("name",name.toString())); 
        //String number = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.NUMBER));
            if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)  

            {
            //Query phone here.  
            Cursor pCur = cr.query(
                                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                                    null, 
                                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                                    new String[]{ids}, null);

                                      while(pCur.moveToNext())
                                      {
                                   String number = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                   list.add(new BasicNameValuePair("num",number.toString())); 
                                      }

                                    pCur.close();
            }//if
          Log.i("array items", "" +list);
   }//if
    }//on click
    }//class

请有人帮助我.....

0 个答案:

没有答案