Person实现Parcelable接口
public class Person implements Parcelable { private int ID; private String name; private int age; private String phone; private String email; ...... @OverrIDe public voID writetoParcel(Parcel dest,int flags) { dest.writeInt(this.ID); dest.writeString(this.name); dest.writeInt(this.age); dest.writeString(this.phone); dest.writeString(this.email); } protected Person(Parcel in) { this.ID = in.readInt(); this.name = in.readString(); this.age = in.readInt(); this.phone = in.readString(); this.email = in.readString(); } public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { @OverrIDe public Person createFromParcel(Parcel source) { return new Person(source); } @OverrIDe public Person[] newArray(int size) { return new Person[size]; } };}
MainActivity中点击编辑时,打开新Activity,并且传递数据
@OverrIDe public boolean onContextItemSelected(MenuItem item) { switch (item.getItemID()){ case MENU_ITEM_EDIT: //打开新的Activity Intent intent = new Intent(this,ContactFormActivity.class); intent.putExtra("person",persons.get(actionposition)); startActivity(intent); break; case MENU_ITEM_DELETE: ...... break; } return super.onContextItemSelected(item); }
ContactFormActivity
private int mode; private static final int MODE_ADD = 0; private static final int MODE_EDIT = 1;@OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_contact_form); initVIEws(); setListeners(); Person person = getIntent().getParcelableExtra("person"); //判断是否接收到数据 if(person == null){ //增加状态 mode = MODE_ADD; }else { mode = MODE_EDIT; etUsername.setText(person.getname()); etAge.setText(person.getAge()+""); etPhone.setText(person.getPhone()); etEmail.setText(person.getEmail()); btnSave.setText("编辑"); etUsername.setEnabled(false); etUsername.setTextcolor(color.parsecolor("#999999")); } }
IDao
public interface IDao<T> { ...... int update(T t);}
PersonDao中重写update方法
@OverrIDe public int update(Person person) { DBOpenHelper dbOpenHelper = new DBOpenHelper(context); sqliteDatabase db = dbOpenHelper.getWritableDatabase(); //执行业务,修改数据 String table = "users"; ContentValues values = new ContentValues(); values.put("_age",person.getAge()); values.put("_phone",person.getPhone()); values.put("_email",person.getEmail()); String whereClause = " _ID = ?"; String[] whereArgs = { person.getID()+"" }; int affectedRows = db.update(table,values,whereClause,whereArgs); db.close(); db = null; return affectedRows; }
ContactFormActivity
private int editID; private int mode; private static final int MODE_ADD = 0; private static final int MODE_EDIT = 1; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_contact_form); initVIEws(); setListeners(); Person person = getIntent().getParcelableExtra("person"); //判断是否接收到数据 if(person == null){ //增加状态 mode = MODE_ADD; }else { mode = MODE_EDIT; editID = person.getID(); etUsername.setText(person.getname()); etAge.setText(person.getAge()+""); etPhone.setText(person.getPhone()); etEmail.setText(person.getEmail()); btnSave.setText("编辑"); etUsername.setEnabled(false); etUsername.setTextcolor(color.parsecolor("#999999")); } }...... @OverrIDe public voID onClick(VIEw vIEw) { switch (vIEw.getID()){ case R.ID.btn_save: //获取表单中的数据 String name = etUsername.getText().toString().trim(); String phone = etPhone.getText().toString().trim(); String email = etEmail.getText().toString().trim(); int age = Integer.parseInt(etAge.getText().toString()); Person person = new Person(name,age,phone,email); PersonDao personDao = new PersonDao(this); if(mode == MODE_ADD){ long ID = personDao.insert(person); if(ID == -1){ Toast.makeText(this,"姓名或电子邮件可能冲突!",Toast.LENGTH_SHORT).show(); }else { Toast.makeText(this,"数据增加成功",Toast.LENGTH_SHORT).show(); etUsername.setText(null); etPhone.setText(null); etEmail.setText(null); etAge.setText(null); } }else { person.setID(editID); int affectedRows = personDao.update(person); if(affectedRows > 0){ Toast.makeText(this,"修改数据成功",Toast.LENGTH_SHORT).show(); finish(); }else { Toast.makeText(this,"修改数据失败",Toast.LENGTH_SHORT).show(); } } break; case R.ID.btn_back: finish(); break; } }源码下载
https://download.csdn.net/download/u010356768/10441998
总结以上是内存溢出为你收集整理的【达内课程】SQLite(五)项目之编辑联系人列表全部内容,希望文章能够帮你解决【达内课程】SQLite(五)项目之编辑联系人列表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)