java - read contacts from phonebook and when clicking on the contact name show their phone numbers on a different page -


im new in app development wrote code want read contacts list phone book , have managed click on contact. problem want display contacts name , phone number on different page when contacts shown on contacts listview clicked. want show name , phone number on add_friend class.

this contact.java

public class contact extends appcompatactivity implements loadermanager     .loadercallbacks<cursor> { private static final string[] from_columns = {         contactscontract.data.contact_id,         build.version.sdk_int >= build.version_codes.honeycomb ?                 contactscontract.contacts.display_name_primary :                 contactscontract.contacts.display_name, contactscontract.data.photo_id, }; private static final int request_permission = 0;private contactadapter mcontactadapter; private recyclerview mcontactrecyclerview;   private static final int loader_id = 1;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.contacts);        if (activitycompat.checkselfpermission(contact.this, manifest.permission             .read_contacts) != packagemanager.permission_granted) {         activitycompat.requestpermissions(                 contact.this,                 new string[]{                         manifest.permission.read_contacts                 },                 request_permission         );     } else {         getsupportloadermanager().initloader(loader_id, savedinstancestate, this);     }      //initialising loadermanger     getsupportloadermanager().initloader(loader_id, savedinstancestate, this);      mcontactrecyclerview = (recyclerview) findviewbyid(r.id.recycler_view_contacts);     mcontactrecyclerview.sethasfixedsize(true);     mcontactrecyclerview.setlayoutmanager(new linearlayoutmanager(contact.this));      mcontactadapter = new contactadapter(contact.this, null, contactscontract.data.contact_id);      mcontactrecyclerview.setadapter(mcontactadapter);   }  @override public loader<cursor> oncreateloader(int id, bundle args) {     switch (id) {         case loader_id:             return new cursorloader(contact.this, contactscontract.data.content_uri, from_columns, null, null,                     (build.version.sdk_int >= build.version_codes.honeycomb ?                             contactscontract.contacts.display_name_primary :                             contactscontract.contacts.display_name) + " asc");         default:             if (buildconfig.debug)                 throw new illegalargumentexception("no id handled");             return null;     } }  @override public void onloadfinished(loader<cursor> loader, cursor data) {     mcontactadapter.swapcursor(data); }  @override public void onloaderreset(loader<cursor> loader) {     mcontactadapter.swapcursor(null); } 

}

this contactadapter

public class contactadapter extends cursorrecyclerviewadapter<contactadapter.contactviewholder> { public contactadapter(context context, cursor cursor, string id){     super(context, cursor, id); }textview contact_name;  @override public contactviewholder oncreateviewholder(viewgroup parent, int viewtype) {     view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.row_contact,             parent, false);     contact_name=(textview)view.findviewbyid(r.id.contact_display_name);     contact_name.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             intent contintent= new intent(mcontext.getapplicationcontext(), add_friend.class );             contintent.setflags(intent.flag_activity_new_task| intent.flag_activity_multiple_task);             mcontext.getapplicationcontext().startactivity(contintent);         }     });     return new contactviewholder(view); }   @override public void onbindviewholder(contactviewholder viewholder, cursor cursor) {     //now can handle onbindviewholder      long contactid = getitemid(cursor.getposition());      //setting username     string username = cursor.getstring(cursor.getcolumnindex(             build.version.sdk_int >= build.version_codes.honeycomb ?                     contactscontract.contacts.display_name_primary :                     contactscontract.contacts.display_name     ));      viewholder.contactdisplaynametextview.settext(username);      //setting photo      long photoid = cursor.getlong(cursor.getcolumnindex(             contactscontract.data.photo_id     ));      if (photoid != 0) {         uri contacturi = contenturis.withappendedid(contactscontract.contacts.content_uri,                 contactid);         uri photouri = uri.withappendedpath(contacturi, contactscontract.contacts.photo                 .content_directory);          viewholder.contactdisplayimageview.setimageuri(photouri);     } else {         viewholder.contactdisplayimageview.setimageresource(r.drawable.prof_icon);     } }  public static class contactviewholder extends recyclerview.viewholder {      imageview contactdisplayimageview;     textview contactdisplaynametextview;      public contactviewholder(view itemview) {         super(itemview);         contactdisplayimageview = (imageview) itemview.findviewbyid(r.id.contact_display);         contactdisplaynametextview = (textview) itemview.findviewbyid(r.id.contact_display_name);      } } 

}

and recycler view

public abstract class cursorrecyclerviewadapter<vh extends recyclerview.viewholder> extends recyclerview.adapter<vh> { @suppresswarnings("unused") private static final string tag = cursorrecyclerviewadapter.class.getsimplename();  protected context mcontext;  private cursor mcursor; private boolean mdatavalid; private int mrowidcolumn; private string mid; private datasetobserver mdatasetobserver;   public cursorrecyclerviewadapter(context context, cursor cursor, string id) {     mcontext = context;     mcursor = cursor;     mdatavalid = cursor != null;     mrowidcolumn = mdatavalid ? mcursor.getcolumnindex(id) :-1;     mid = id;     mdatasetobserver = new notifyingdatasetobserver(this);     if (mcursor != null) {         mcursor.registerdatasetobserver(mdatasetobserver);     } }  @suppresswarnings("unused") protected cursor getcursor() {     return mcursor; }   @override public vh oncreateviewholder(viewgroup parent, int viewtype) {     return null; }  @override public void onbindviewholder(vh holder, int position) {     if (!mdatavalid) {         throw new illegalstateexception("this should called when cursor valid");     }     if (!mcursor.movetoposition(position)) {         throw new illegalstateexception("couldn't move cursor position " + position);     }     onbindviewholder(holder, mcursor); }  @override public int getitemcount() {     if (mdatavalid && mcursor != null) {         return mcursor.getcount();     }     return 0; }  @override public long getitemid(int position) {     if (mdatavalid && mcursor != null && mcursor.movetoposition(position)) {         return mcursor.getlong(mrowidcolumn);     }     return 0; }  @override public void sethasstableids(boolean hasstableids) {     super.sethasstableids(true); }  public abstract void onbindviewholder(vh viewholder, cursor cursor); @suppresswarnings("unused") public void changecursor(cursor cursor) {     cursor old = swapcursor(cursor);     if (old != null) {         old.close();     } }  public cursor swapcursor(cursor newcursor) {     if (newcursor == mcursor) {         return null;     }     final cursor oldcursor = mcursor;     if (oldcursor != null && mdatasetobserver != null) {         oldcursor.unregisterdatasetobserver(mdatasetobserver);     }     mcursor = newcursor;     if (mcursor != null) {         if (mdatasetobserver != null) {             mcursor.registerdatasetobserver(mdatasetobserver);         }         mrowidcolumn = newcursor.getcolumnindexorthrow(mid);         mdatavalid = true;         notifydatasetchanged();     } else {         mrowidcolumn = -1;         mdatavalid = false;         notifydatasetchanged();         //there no notifydatasetinvalidated() method in recyclerview.adapter     }     return oldcursor; }  public void setdatavalid(boolean datavalid) {     mdatavalid = datavalid; }  private class notifyingdatasetobserver extends datasetobserver {     private recyclerview.adapter adapter;      public notifyingdatasetobserver(recyclerview.adapter adapter) {         this.adapter = adapter;     }      @override     public void onchanged() {         super.onchanged();         ((cursorrecyclerviewadapter) adapter).setdatavalid(true);         adapter.notifydatasetchanged();     }      @override     public void oninvalidated() {         super.oninvalidated();         ((cursorrecyclerviewadapter) adapter).setdatavalid(false);     } } 

this want show name , number of contact selected

public class add_friend extends appcompatactivity {

@override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_add__friend); } 

}

this layout want name , phone number appear

              ' <?xml version="1.0" encoding="utf-8"?> <relativelayout xml :android="http://schemas.android.com/apk/res/android"           android:orientation="horizontal"           android:layout_width="match_parent"           android:gravity="center_vertical"           android:layout_marginleft="16dp"           android:layout_marginright="16dp"           android:layout_margintop="8dp"           android:layout_marginbottom="8dp"           android:layout_height="wrap_content">  <relativelayout android:layout_width="match_parent"     android:layout_height="match_parent">      <textview         android:id="@+id/contact_display_name"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:maxlines="1"         android:text="contact username"         android:textcolor="@android:color/black"         android:textsize="20sp"         android:layout_margintop="26dp"         android:layout_below="@+id/contact_display"         android:layout_alignparentleft="true"         android:layout_alignparentstart="true"/>      <textview         android:id="@+id/number"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:maxlines="1"         android:text="0986857456"         android:textcolor="@android:color/black"         android:textsize="20sp"         android:layout_below="@+id/contact_display_name"         android:layout_alignleft="@+id/contact_display_name"         android:layout_alignstart="@+id/contact_display_name"         android:layout_margintop="20dp"/>      <button         android:id="@+id/button8"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="add friend"         android:layout_below="@+id/contact_display_name"         android:layout_alignparentright="true"         android:layout_alignparentend="true"/>      <de.hdodenhof.circleimageview.circleimageview         android:id="@+id/contact_display"         android:layout_width="90dp"         android:layout_height="90dp"         android:src="@drawable/prof_icon"         android:layout_alignparenttop="true"         android:layout_alignparentleft="true"         android:layout_alignparentstart="true"/> </relativelayout> 

this how want appear this how want appear

intent contintent= new intent(mcontext.getapplicationcontext(), add_friend.class ); 

after line put data :

contintent.putextra("name", data1); contintent.putextra("number", data2); 

and data in oncreate add_friend activity this:

string name = getintent().getstringextra("name");     string number = getintent().getstringextra("number");  

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -