2017-06-01 3 views
-1

Kontaktliste wird aus den Kontakten abgerufen und in listView angezeigt. Wenn ein einzelner Kontakt aus der Listenansicht geklickt wird, wird eine neue Aktivität gestartet, z. B. DetailActivity.java (Code unten). Ich muss den Geburtstag des geklickten Kontakts im Feld TextView von DetailActivity anzeigen. Wie es geht?Geburtstag von bestimmten Kontakten abrufen

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

bitte teilen Sie Ihren Code außerdem, was du so versucht hast weit und wo es dir fehlt –

+0

Ich schätze, er hat noch nichts versucht. Bitte lerne etwas Android-Programmierung und versuche etwas zu machen. Wenn Sie irgendwo stecken geblieben sind, kommen Sie zurück und stellen Sie Ihre spezifische Frage. –

+0

@PratikVyas nach den Tags zu urteilen, bevor ich sie bearbeitet habe, hat das OP nicht einmal gewählt, ob man Eclipse oder Android Studio verwendet! –

Antwort

0

Sie den Geburtstag Datum Kontakte erhalten können, versuchen Sie dies:

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 danke ich werde es überprüfen –

Verwandte Themen