剛學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;
}
}
就這樣吧^_*