Android通讯录

刚学Android的菜鸟都喜欢拿通讯录项目来练手,我这枚菜鸟也是的啦^_^
首先是把程序的结构搭建起来,我用的是MVC三层架构:

mvc三层架构
如果选用SQLite存储联系人信息的话可以不用FileImp类,当然也可以用文件的形式存储联系人信息.
看看界面吧:
通讯录通讯录
单击任意联系人 弹出操作选择对话框,可以弹出操作选择框
通讯录通讯录
通讯录![](https://img-blog.csdn.net/20150704133104993)通讯录这里写图片描述
添加联系人的代码:在保存按钮上添加响应事件

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;
    }
}

就这样吧^_*

猜你喜欢

转载自blog.csdn.net/xlm11/article/details/46755235