android - Database saving all the details rather than the image -


im writing simple app save contacts in list. database working fine, when im restarting app or updating contact's details(even when im not updating image), images not visible again.

there's missed along way? in advance!

mainactivity.class

package org.intracode.contactmanager;  import android.content.intent; import android.net.uri; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.text.editable; import android.text.textutils; import android.text.textwatcher; import android.view.contextmenu; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.button; import android.widget.edittext; import android.widget.imageview; import android.widget.listview; import android.widget.tabhost; import android.widget.textview; import android.widget.toast;  import java.net.uri; import java.util.arraylist; import java.util.linkedlist; import java.util.list;  public class mainactivity extends appcompatactivity {     //live apearences in screen objects     edittext nameline, phoneline, emailline, addressline;     button addbtn;     tabhost mytab;     list<contact> mycontactlist = new arraylist<>();     listview mylistview;     imageview contactimage;     uri imageuri = uri.parse("android.resource://org.intracode.contactmanager/drawable/no_logo.png");// including assigning     databasehandler contacsdb;     arrayadapter<contact> mycontactsadapter;     int longcclickelemnt;//clicked item position     private  static final int edit=0,delete=1;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);           //assigning line fields         nameline = (edittext) findviewbyid(r.id.nameline);         phoneline = (edittext) findviewbyid(r.id.phoneline);         emailline = (edittext) findviewbyid(r.id.emailline);         addressline = (edittext) findviewbyid(r.id.adressline);         addbtn = (button) findviewbyid(r.id.savebutton);          //assigning tab objects         mytab = (tabhost) findviewbyid(r.id.tabhost); //assigning general tab         mytab.setup();         //assigning first sub tub         tabhost.tabspec tabspec = mytab.newtabspec("creator");         tabspec.setcontent(r.id.creatortab);         tabspec.setindicator("creator");//name of sub tab         mytab.addtab(tabspec);// connecting sub tab general tab         // assigning second sub tub         tabspec = mytab.newtabspec("list");         tabspec.setcontent(r.id.tabcontactlist);         tabspec.setindicator("list");//name of sub tab         mytab.addtab(tabspec);// connecting sub tab general tab         //assigning listview object         mylistview = (listview) findviewbyid(r.id.listview);         // assigning imageview object         contactimage = (imageview) findviewbyid(r.id.contactimage);         //assignig database         contacsdb = new databasehandler(getapplicationcontext());         //register menu list object         registerforcontextmenu(mylistview);         mylistview.setonitemlongclicklistener(new adapterview.onitemlongclicklistener() {             @override             public boolean onitemlongclick(adapterview<?> adapterview, view view, int i, long l) {                 longcclickelemnt=i;                 contactimage.setvisibility(view.visible);                  return false;             }         });          // name event         nameline.addtextchangedlistener(new textwatcher() {             @override             public void beforetextchanged(charsequence charsequence, int i, int i1, int i2) {               }              @override             public void ontextchanged(charsequence charsequence, int i, int i1, int i2) {                 string email = charsequence.tostring().trim();                 addbtn.setenabled(string.valueof(nameline.gettext()).trim().length() > 0 && isvalidemaillid(email));             }              @override             public void aftertextchanged(editable editable) {              }         });         // email event         emailline.addtextchangedlistener(new textwatcher() {             string emailstring = emailline.gettext().tostring().trim();              @override             public void beforetextchanged(charsequence charsequence, int i, int i1, int i2) {              }              @override             public void ontextchanged(charsequence charsequence, int i, int i1, int i2) {                 string email = charsequence.tostring().trim();                 addbtn.setenabled(nameline.gettext().tostring().trim().length() > 0 && isvalidemaillid(email));             }              @override             public void aftertextchanged(editable editable) {              }         });         //buttonevent         addbtn.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 contact newcont = new contact(contacsdb.getcontactscount(), nameline.gettext().tostring(), phoneline.gettext().tostring(), emailline.gettext().tostring(), addressline.gettext().tostring(), imageuri);                 if (!contactexist(newcont)) {                     contacsdb.createcontact(newcont);                     mycontactlist.add(newcont);                     mycontactsadapter.notifydatasetchanged();// let  adapter know changing in our list                     toast.maketext(getapplicationcontext(), "you added " + nameline.gettext().tostring() + " contact list", toast.length_short).show();                     return;                 }                 toast.maketext(getapplicationcontext(), nameline.gettext().tostring() + " exist in list", toast.length_short).show();                 nameline.settext("");                 phoneline.settext("");                 emailline.settext("");                 addressline.settext("");                 contactimage.setimageresource(r.drawable.no_logo);               }          });          //contactimageevent         contactimage.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {// defining chooser                 intent intent = new intent();// intent object passes messeges in our system                 intent.settype("image/*");// set explicit mime data type.                 intent.setaction(intent.action_get_content);//allow user select particular kind of data , return it.                 startactivityforresult(intent.createchooser(intent, "select contact image"), 1);             }         });          //populate list such our list view show contact in pur database         // synchronized our database         if (contacsdb.getcontactscount() > 0)             mycontactlist.addall(contacsdb.getallcontacts());         populatelist();// write contact added list's screen     }       //special method moment create menu fields     public void oncreatecontextmenu(contextmenu mymenu, view myview,contextmenu.contextmenuinfo menuinfo){         super.oncreatecontextmenu(mymenu,myview,menuinfo);         mymenu.setheadericon(r.drawable.edit_icon);         mymenu.setheadertitle("contact options");         mymenu.add(menu.none,edit,mymenu.none,"edit contact");         mymenu.add(menu.none,delete,mymenu.none,"delete contact");      }      public  boolean oncontextitemselected(menuitem myitem){         switch(myitem.getitemid()){             case edit:                 intent movetoedit= new intent(this,editcontactactivity.class);                 string[] argtopass={string.valueof(mycontactlist.get(longcclickelemnt).getid()),mycontactlist.get(longcclickelemnt).getname(),                         mycontactlist.get(longcclickelemnt).getphone(), mycontactlist.get(longcclickelemnt).getemail(),                         mycontactlist.get(longcclickelemnt).getaddress(),string.valueof(mycontactlist.get(longcclickelemnt).getimageuri())};                 movetoedit.putextra("args",argtopass);                 startactivityforresult(movetoedit,2);                 break;             case delete:                 //longcclickelemnt represents position of item clicked on in our listview                 // , initilized every setonitemlongclicklistener                 contacsdb.deletecontact(mycontactlist.get(longcclickelemnt));//remove database                 mycontactlist.remove(longcclickelemnt);// remove list                 mycontactsadapter.notifydatasetchanged();// update database instantly                 break;         }         return super.oncontextitemselected(myitem);     }     //handling result of clicking contact image(created reply startactivityforresult function )     public void onactivityresult(int requestcode, int resultcode, intent data) {         if (resultcode == result_ok) {             switch (requestcode) {                 case 1:// comeback image collecting screen                     imageuri = data.getdata();                     contactimage.setimageuri(data.getdata());//sets content of imageview specified uri.                     break;                 case 2://comeback edit contact screen                     string[] contactdetails=data.getstringarrayextra("result");                     contacsdb.updatecontact(new contact(integer.parseint(contactdetails[0]), contactdetails[1], contactdetails[2],                             contactdetails[3],contactdetails[4], uri.parse(contactdetails[5])));//update datatbase operation                     mycontactlist.get(longcclickelemnt).setall(contactdetails[1], contactdetails[2],                             contactdetails[3],contactdetails[4], uri.parse(contactdetails[5]));                     mycontactsadapter.notifydatasetchanged();// update database instantly                     toast.maketext(getapplicationcontext(),"changes saved!",toast.length_short).show();                     break;             }         }     }     // special adapter helps display data in ui element, extending array adapter class     private class contactlistadapter extends arrayadapter<contact> {          public contactlistadapter() {             super(mainactivity.this, r.layout.contact_layout, mycontactlist);         }          @override         public view getview(int position, view myview, viewgroup parent) {//adding contact in position our contactlist screen             if (myview == null)                 myview = getlayoutinflater().inflate(r.layout.contact_layout, parent, false);             contact currcontact = mycontactlist.get(position);              textview name = myview.findviewbyid(r.id.contact_name_store);             name.settext(currcontact.getname());              textview phone = myview.findviewbyid(r.id.phone_store);             phone.settext(currcontact.getphone());              textview email = myview.findviewbyid(r.id.email_store);             email.settext(currcontact.getemail());              textview address = myview.findviewbyid(r.id.address_store);             address.settext(currcontact.getaddress());              imageview contactimage = myview.findviewbyid(r.id.imageviewonlayput);             contactimage.setimageuri(currcontact.getimageuri());              return myview;         }     }      // write inside mylistview of adapter     private void populatelist() {         mycontactsadapter = new contactlistadapter();         mylistview.setadapter(mycontactsadapter);     }      //check if one's email address valid     public static boolean isvalidemaillid(string email) {         return !textutils.isempty(email) && android.util.patterns.email_address.matcher(email).matches();     }      private boolean contactexist(contact c) {         string c_name = c.getname();         int count = mycontactlist.size();          (int = 0; < count; i++) {             if (mycontactlist.get(i).getname().comparetoignorecase(c_name) == 0)                 return true;         }         return false;     } } 

databasehandler.class

package org.intracode.contactmanager;  import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; import android.net.uri;  import java.util.arraylist; import java.util.list;  /**  * created johnny manson on 19.01.14.  */ public class databasehandler extends sqliteopenhelper {      private static final int database_version = 1;      private static final string database_name = "contactmanager",             table_contacts = "contacts",             key_id = "id",             key_name = "name",             key_phone = "phone",             key_email = "email",             key_address = "address",             key_imageuri = "imageuri";      public databasehandler(context context) {         super(context, database_name, null, database_version);     }      @override     public void oncreate(sqlitedatabase db) {         db.execsql("create table " + table_contacts + "(" + key_id + " integer primary key autoincrement," + key_name + " text," + key_phone + " text," + key_email + " text," + key_address + " text," + key_imageuri + " text)");     }      @override     public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {         db.execsql("drop table if exists " + table_contacts);          oncreate(db);     }      public void createcontact(contact contact) {         sqlitedatabase db = getwritabledatabase();          contentvalues values = new contentvalues();          values.put(key_name, contact.getname());         values.put(key_phone, contact.getphone());         values.put(key_email, contact.getemail());         values.put(key_address, contact.getaddress());         values.put(key_imageuri, string.valueof(contact.getimageuri()));         db.insert(table_contacts, null, values);         db.close();     }      public contact getcontact(int id) {         sqlitedatabase db = getreadabledatabase();          cursor cursor = db.query(table_contacts, new string[] { key_id, key_name, key_phone, key_email, key_address, key_imageuri }, key_id + "=?", new string[] { string.valueof(id) }, null, null, null, null );          if (cursor != null)             cursor.movetofirst();          contact contact = new contact(integer.parseint(cursor.getstring(0)), cursor.getstring(1), cursor.getstring(2), cursor.getstring(3), cursor.getstring(4), uri.parse(cursor.getstring(5)));         db.close();         cursor.close();         return contact;     }      public void deletecontact(contact contact) {         sqlitedatabase db = getwritabledatabase();         db.delete(table_contacts, key_id + "=?", new string[] { string.valueof(contact.getid()) });         db.close();     }      public int getcontactscount() {         sqlitedatabase db = getreadabledatabase();         cursor cursor = db.rawquery("select * " + table_contacts, null);         int count = cursor.getcount();         db.close();         cursor.close();          return count;     }      public int updatecontact(contact contact) {         sqlitedatabase db = getwritabledatabase();          contentvalues values = new contentvalues();          values.put(key_name, contact.getname());         values.put(key_phone, contact.getphone());         values.put(key_email, contact.getemail());         values.put(key_address, contact.getaddress());         values.put(key_imageuri, contact.getimageuri().tostring());          int rowsaffected = db.update(table_contacts, values, key_id + "=?", new string[] { string.valueof(contact.getid()) });         db.close();          return rowsaffected;     }      public list<contact> getallcontacts() {         list<contact> contacts = new arraylist<contact>();          sqlitedatabase db = getwritabledatabase();         cursor cursor = db.rawquery("select * " + table_contacts, null);          if (cursor.movetofirst()) {             {                 contacts.add(new contact(integer.parseint(cursor.getstring(0)), cursor.getstring(1), cursor.getstring(2), cursor.getstring(3), cursor.getstring(4), uri.parse(cursor.getstring(5))));             }             while (cursor.movetonext());         }         cursor.close();         db.close();         return contacts;     } } 

editactivity.class

package org.intracode.contactmanager;  import android.app.activity; import android.content.intent; import android.net.uri; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.text.editable; import android.text.textwatcher; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.imageview; import android.widget.toast;  public class editcontactactivity extends appcompatactivity {     //live appearances in screen objects     edittext editname, editphone, editemail, editaddress;     button editbutton;     imageview editimage;     uri imageuri = uri.parse("android.resource://org.intracode.contactmanager/drawable/no_logo.png");// including assigning      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_edit_contact);          //assigning fields         editname = (edittext) findviewbyid(r.id.editname);         editphone = (edittext) findviewbyid(r.id.editphone);         editemail = (edittext) findviewbyid(r.id.editemail);         editaddress = (edittext) findviewbyid(r.id.editaddress);         editbutton = (button) findviewbyid(r.id.editbutton);         editimage = (imageview) findviewbyid(r.id.editimage);         // getting passed arguments         string[] passedarg = getintent().getstringarrayextra("args");         editname.settext(passedarg[1]);         editphone.settext(passedarg[2]);         editemail.settext(passedarg[3]);         editaddress.settext(passedarg[4]);         editimage.setimageuri(uri.parse(passedarg[5]));         //events          editname.addtextchangedlistener(new textwatcher() {             @override             public void beforetextchanged(charsequence charsequence, int i, int i1, int i2) {               }              @override             public void ontextchanged(charsequence charsequence, int i, int i1, int i2) {                 string email = charsequence.tostring().trim();                 editbutton.setenabled(string.valueof(editname.gettext()).trim().length() > 0 && mainactivity.isvalidemaillid(email));             }              @override             public void aftertextchanged(editable editable) {              }         });         // email event         editemail.addtextchangedlistener(new textwatcher() {             string emailstring = editemail.gettext().tostring().trim();              @override             public void beforetextchanged(charsequence charsequence, int i, int i1, int i2) {              }              @override             public void ontextchanged(charsequence charsequence, int i, int i1, int i2) {                 string email = charsequence.tostring().trim();                 editbutton.setenabled(editname.gettext().tostring().trim().length() > 0 && mainactivity.isvalidemaillid(email));             }              @override             public void aftertextchanged(editable editable) {              }         });         //buttonevent         editbutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 intent returnintent = new intent();                 string[] passedarg = getintent().getstringarrayextra("args");                 string[] argtoreturn = {passedarg[0], string.valueof(editname.gettext()), string.valueof(editphone.gettext()), string.valueof(editemail.gettext()),                         string.valueof(editaddress.gettext()), string.valueof(editimage)};                 returnintent.putextra("result", argtoreturn);                 setresult(activity.result_ok, returnintent);                 finish();             }         });         editimage.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {// defining chooser                 intent intent = new intent();// intent object passes messeges in our system                 intent.settype("image/*");// set explicit mime data type.                 intent.setaction(intent.action_get_content);//allow user select particular kind of data , return it.                 startactivityforresult(intent.createchooser(intent, "select contact image"), 1);              }         });       }      public void onactivityresult(int requestcode, int resultcode, intent data) {         if (resultcode == result_ok) {             switch (requestcode) {                 case 1:// comeback image collecting screen                     imageuri = data.getdata();                     editimage.setimageuri(data.getdata());//sets content of imageview specified uri.               }         }     } } 

contact class

package org.intracode.contactmanager;  import android.net.uri;  import java.net.uri;  /**  * created roey on 09/08/2017.  */  public class contact {     private string name ,email, phone, address;     private uri imageuri;     private int id;// added database manners       public contact(int id,string name ,string phone,string email,string address,uri imageuri){         this.id=id;         this.name=name;         this.email=email;         this.phone=phone;         this.address=address;         this.imageuri=imageuri;     }      //getters     public string getname(){         return name;     }     public string getemail(){         return email;     }     public string getphone(){         return phone;     }     public string getaddress(){         return address;     }     public uri getimageuri(){         return imageuri;     }     public int getid(){         return id;     }     //setters     public void setall(string name,string phone,string email,string address,uri imageuri){         this.name=name;         this.email=email;         this.phone=phone;         this.address=address;         this.imageuri=imageuri;     }    } 


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -