как получить имя и номер контакта в двух разных массивах в приложении для Android? - PullRequest
0 голосов
/ 02 ноября 2011

Я сделал приложение, которое вызывает список контактов телефона, но я хочу обрабатывать имя и номера контактов по-своему. Есть ли способ, как я могу получить номера и имя в двух разных массивах?это мой код ... одно действие, а два других - макеты. Я пытаюсь динамически добавить текстовое представление в представление списка, но не могу это сделать ... может быть, поэтому я не получаю и цифры, и именапросмотр списка .. любезно помогите мне. очень срочно .. заранее спасибо ..

пакет 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> .........

1 Ответ

1 голос
/ 02 ноября 2011

Надеюсь, что вы сможете получить подробности, запросив контент-провайдеров.

Если это так, как только вы получите информацию в своем курсоре, вы можете добавить ее в ArrayList по мере необходимости

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...

Надеюсь, это поможет

...