2017-06-01 68 views
-1

聯繫人列表從聯繫人中檢索並顯示在listView中。當從列表視圖中單擊一個聯繫人時,它將啓動一個新的活動,例如DetailActivity.java(下面提供的代碼)。我需要在DetailActivity的TextView字段中顯示點擊的聯繫人的生日。怎麼做?檢索特定聯繫人的生日

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    ListView listView1 ; 
    ArrayList<String> nameArray, phoneArray; 
    ArrayAdapter<String> arrayAdapter; 
    Cursor cursor, birthdayCur ; 
    String name, birthday ; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main1); 

     listView1 = (ListView)findViewById(listView); 

     nameArray = new ArrayList<String>(); 

     GetContactsIntoArrayList(); 

     arrayAdapter = new ArrayAdapter<String>(
       MainActivity.this, 
       R.layout.contact_items, 
       textView, nameArray 
     ); 

     listView1.setAdapter(arrayAdapter); 

     listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) { 

       String data = (String) adapter.getItemAtPosition(position); 
       Intent appInfo = new Intent(MainActivity.this, DetailActivity.class); 
       appInfo.putExtra("data", data); 
       startActivity(appInfo); 

      } 
     }); 
} 

public void GetContactsIntoArrayList(){ 

     cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null, null, null); 

     while (cursor.moveToNext()) { 

      name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 

      nameArray.add(name); 

     } 

     cursor.close(); 

     String where = ContactsContract.CommonDataKinds.Event.TYPE + "=" + ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY; 

     birthdayCur = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, where, null, null); 
     if (birthdayCur.getCount() > 0) { 
      while (birthdayCur.moveToNext()) { 
       birthday = birthdayCur.getString(birthdayCur.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE)); 
       phoneArray.add(birthday); 
      } 

     } 
     birthdayCur.close(); 

    } 

DetailActivity.java

public class DetailActivity extends AppCompatActivity { 

    TextView tv1, tv2; 
    String data; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_detail); 

     Intent i = getIntent(); 

     data = i.getStringExtra("data"); 

     tv1 = (TextView) findViewById(R.id.name); 
     tv1.setText(data); 


    } 
+3

請分享您的代碼以及你曾經嘗試過的遠,你在哪裏缺乏 –

+0

我想他沒有嘗試任何東西。請學習一些Android編程,並嘗試做些什麼。如果你堅持任何地方回來問你的具體問題。 –

+0

@PratikVyas在編輯它們之前通過標籤判斷,OP甚至沒有選擇是使用Eclipse還是Android Studio! –

回答

0

你可以得到聯繫人的生日日期,試試這個:

ContentResolver cr = getContentResolver(); 
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
if (cur.getCount() > 0) { 
    while (cur.moveToNext()) { 
     String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
     String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     ContentResolver bd = getContentResolver(); 
     Cursor bdc = bd.query(android.provider.ContactsContract.Data.CONTENT_URI, new String[] { Event.DATA }, android.provider.ContactsContract.Data.CONTACT_ID+" = "+id+" AND "+Data.MIMETYPE+" = '"+Event.CONTENT_ITEM_TYPE+"' AND "+Event.TYPE+" = "+Event.TYPE_BIRTHDAY, null, android.provider.ContactsContract.Data.DISPLAY_NAME); 
     if (bdc.getCount() > 0) { 
      while (bdc.moveToNext()) { 
       String birthday = bdc.getString(0); 
       // now "id" is the user's unique ID, "name" is his full name and "birthday" is the date and time of his birth 
      } 
     } 
    } 
} 
cur.close(); 
+0

Bhaskar謝謝我會檢查出來 –