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

就這樣吧^_*

發佈了30 篇原創文章 · 獲贊 19 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章