刚学Android的菜鸟都喜欢拿通讯录项目来练手,我这枚菜鸟也是的啦^_^
首先是把程序的结构搭建起来,我用的是MVC三层架构:
如果选用SQLite存储联系人信息的话可以不用FileImp类,当然也可以用文件的形式存储联系人信息.
看看界面吧:
单击任意联系人 弹出操作选择对话框,可以弹出操作选择框
添加联系人的代码:在保存按钮上添加响应事件
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
service.update(getContent());
Intent intent=new Intent(ModifyActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
});
如何修改imageButton的图片呢?
radiogroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
RadioButton rb=(RadioButton) findViewById(checkedId);
gend=rb.getText().toString();
if(gend.equals("男")){
imageButton.setImageResource(R.drawable.male);
}else{
imageButton.setImageResource(R.drawable.female);
}
}
});
如何拨打电话和发短信呢,首先在AndroidMainfeast添加权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
单击列表中的联系人会有操作对话框:
contactList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
/* Intent intent=new Intent(MainActivity.this,DetailActivity.class);
Contact contact =(Contact) contacts.get(position);
intent.putExtra("id", contact.getId());
startActivity(intent); */
Dialog dialog = new AlertDialog.Builder(MainActivity.this).setTitle("请选择操作:").setPositiveButton("打电话", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Contact contact =(Contact) contacts.get(position);
Intent phone=new Intent();
phone.setAction(Intent.ACTION_CALL);
phone.setData(Uri.parse("tel:"+contact.getPhone()));
//phone.addCategory("android.intent.category.DEFAULT");
startActivity(phone);
}
}).setNegativeButton("发短信", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Contact contact =(Contact) contacts.get(position);
Intent mes=new Intent();
mes.setAction(Intent.ACTION_SENDTO);
mes.setData(Uri.parse("smsto:"+contact.getPhone()));
//phone.addCategory("android.intent.category.DEFAULT");
startActivity(mes);
}
}).setNeutralButton("详细信息", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent=new Intent(MainActivity.this,DetailActivity.class);
Contact contact =(Contact) contacts.get(position+lineSize*(currentPage-1));
intent.putExtra("id", contact.getId());
startActivity(intent);
}
})
.create();
dialog.show();
}
});
}
数据库中对应的增删改查操作:
public class DataBaseImp implements ContactDAO {
DBHelper helper=null;
private Context context;
public DataBaseImp(Context context){
this.context=context;
helper=new DBHelper(context);
}
@Override
public boolean save(Contact contact) {
SQLiteDatabase db=helper.getWritableDatabase();
if(contact!=null){
//想数据表contact中插入联系人数据
String sql="insert into contact (number,name,phone,"
+ "email,address,gender,relationship,remark)"
+ " values(?,?,?,?,?,?,?,?)";
Object[]params=new Object[]{contact.getNumber(),
contact.getName(),contact.getPhone(),contact.getEmail(),
contact.getAddress(),contact.getGender(),
contact.getRelationship(),contact.getRemark()};
db.execSQL(sql, params);
db.close();
return true;
}else{
return false;
}
}
@Override
public Contact get(int id) {
Contact contact=new Contact();
if(id>0){
SQLiteDatabase db=helper.getWritableDatabase();
String sql="select * from contact where _id=?";
String[]params=new String[]{String.valueOf(id)};
Cursor cursor=db.rawQuery(sql, params);
if(cursor.moveToNext()){
contact.setId(cursor.getInt(0));
contact.setNumber(cursor.getString(1));
contact.setName(cursor.getString(2));
contact.setPhone(cursor.getString(3));
contact.setEmail(cursor.getString(4));
contact.setAddress(cursor.getString(5));
contact.setGender(cursor.getString(6));
contact.setRelationship(cursor.getString(7));
contact.setRemark(cursor.getString(8));
}
cursor.close();
db.close();
}
return contact;
}
@Override
public void update(Contact contact) {
if(contact!=null){
SQLiteDatabase db=helper.getWritableDatabase();
String sql="update contact set number=?,name=?,phone=?,"
+ "email=?,address=?,gender=?,relationship=?,"
+ "remark=? where _id=?";
Object[] params=new Object[]{contact.getNumber(),
contact.getName(),contact.getPhone(),
contact.getEmail(),
contact.getAddress(),contact.getGender(),
contact.getRelationship(),contact.getRemark(),
contact.getId()};
db.execSQL(sql, params);
db.close();
}
}
@Override
public void delete(int id) {
if(id>0){
SQLiteDatabase db=helper.getWritableDatabase();
String sql="delete from contact where _id =?";
String[]params=new String[]{String.valueOf(id)};
db.execSQL(sql, params);
db.close();
}
}
@Override
public List getByName(String name) {
if(name==null||name==""){
return getAll();
}
SQLiteDatabase db=helper.getWritableDatabase();
List list=null;
String sql="select * from contact where name like ? or phone like ?";
String[] params=new String[]{"%"+name+"%","%"+name+"%"};
Cursor cursor=db.rawQuery(sql, params);
list=new ArrayList();
while(cursor.moveToNext()){
Contact contact=new Contact();
contact.setId(cursor.getInt(0));
contact.setNumber(cursor.getString(1));
contact.setName(cursor.getString(2));
contact.setPhone(cursor.getString(3));
contact.setEmail(cursor.getString(4));
contact.setAddress(cursor.getString(5));
contact.setGender(cursor.getString(6));
contact.setRelationship(cursor.getString(7));
contact.setRemark(cursor.getString(8));
list.add(contact);
// Toast.makeText(context,contact.getName().toString(), 1).show();
}
cursor.close();
db.close();
return list;
}
@Override
public List getAll() {
List list=null;
SQLiteDatabase db=helper.getWritableDatabase();
String sql="select * from contact";
Cursor cursor=db.rawQuery(sql, null);
list=new ArrayList();
while(cursor.moveToNext()){
Contact contact=new Contact();
contact.setId(cursor.getInt(0));
contact.setNumber(cursor.getString(1));
contact.setName(cursor.getString(2));
contact.setPhone(cursor.getString(3));
contact.setEmail(cursor.getString(4));
contact.setAddress(cursor.getString(5));
contact.setGender(cursor.getString(6));
contact.setRelationship(cursor.getString(7));
contact.setRemark(cursor.getString(8));
list.add(contact);
}
cursor.close();
db.close();
return null;
}
}
就这样吧^_*