irpas技术客

Android Studio实现通讯录项目_振华OPPO_android studio通讯录

大大的周 2158

项目目录 一、项目概述二、开发环境三、详细设计1、主界面的搭建2、SQLite数据库2.1、SQLite是什么?2.2、为什么要用SQLite?2.3、SQLite有什么特点? 3、SQLite相关的类3.1、SQLiteOpenHelper3.2、SQLiteDatabase3.3、Cursor 4、创建数据库与版本管理5、实现增删改查 四、项目效果五、项目总结六、源码下载

一、项目概述

本次项目主要实现了对联系人信息(姓名和电话)的增加、删除、修改和查询功能,在删除和修改用户前,可以通过姓名搜索到指定联系人的信息,方便用户操作。通过SQLiteDatabase来存储数据,SQLite数据库和其他的SQL数据库不同, 我们并不需要在手机上另外安装一个数据库软件,Android系统已经集成了这个数据库,功能非常强大,而且使用也很方便快捷。我们下面会详细介绍SQLite数据库。

二、开发环境

开发环境还是老样子哈,Android Studio版本3.6.1及以上都可以顺利运行。

三、详细设计 1、主界面的搭建

最外层布局采用线性布局LinearLayout。orientation方向选择的也是vertical垂直排列。下面先是放置了一个小的LinearLayout,里面先放一个文本框来显示标题,再放一个图片框,显示图标。然后不断调整内外边距,找到最合适的位置。

<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="通讯录" android:textSize="40sp" android:textStyle="bold" android:textColor="@color/DarkCyan" android:layout_margin="20dp" android:gravity="center"/> <ImageView android:layout_width="200dp" android:layout_height="200dp" android:src="@drawable/contact" android:layout_marginBottom="10dp" android:layout_gravity="center"/>

下面是四个操作按钮,id分别以它们的功能命名,其实四个按钮除了id和text内容不同,其他都是一样的,背景background选择的是写好的btn_selector,在其中设置了按钮的外边框和弧度,而且按钮按下时会有相应的颜色变化。

<Button android:id="@+id/main_add" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="添加联系人" android:gravity="center" android:textColor="@color/Honeydew" android:background="@drawable/btn_selector" android:textSize="20sp" android:layout_margin="10dp"/> <Button android:id="@+id/main_delete" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="删除联系人" android:gravity="center" android:textColor="@color/Honeydew" android:background="@drawable/btn_selector" android:textSize="20sp" android:layout_margin="10dp"/> <Button android:id="@+id/main_update" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="修改联系人" android:gravity="center" android:textColor="@color/Honeydew" android:background="@drawable/btn_selector" android:textSize="20sp" android:layout_margin="10dp"/> <Button android:id="@+id/main_query" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查询联系人" android:gravity="center" android:textColor="@color/Honeydew" android:background="@drawable/btn_selector" android:textSize="20sp" android:layout_margin="10dp"/>

我们看下主界面的示意图:

2、SQLite数据库 2.1、SQLite是什么?

SQLite是一个轻量级的关系型数据库,运算速度快,占用资源少,很适合在移动设备上使用, 不仅支持标准SQL语法,还遵循ACID(数据库事务)原则,无需账号,使用起来非常方便!Android内置的SQLite是SQLite 3版本的。

2.2、为什么要用SQLite?

前面我们学习了使用文件与SharedPreference来保存数据,但是在很多情况下,文件并不一定是有效的,如多线程并发访问是相关的;app要处理可能变化的复杂数据结构等等。比如银行的存钱与取钱!使用前两者就会显得很无力或者繁琐,数据库的出现可以解决这种问题,而Android又给我们提供了这样一个轻量级的SQLite,那肯定要好好用啊。

2.3、SQLite有什么特点?

SQLite支持五种数据类型:NULL,INTEGER,REAL(浮点数),TEXT(字符串文本)和BLOB(二进制对象) 虽然只有五种,但是对于varchar,char等其他数据类型都是可以保存的;因为SQLite有个最大的特点:

你可以将各种数据类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。

比如你可以在Integer类型的字段中存放String字符串,当然除了声明为主键INTEGER PRIMARY KEY的字段只能够存储64位整数。 另外,SQLite 在解析CREATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息。如下面语句会忽略 name字段的类型信息:

CREATE TABLE person (personid integer primary key autoincrement, name varchar(20)) SQlite通过文件来保存数据库,一个文件就是一个数据库,数据库中又包含多个表格,表格里又有 多条记录,每个记录由多个字段构成,每个字段有对应的值,每个值我们可以指定类型,也可以不指定 类型(主键除外)
3、SQLite相关的类 3.1、SQLiteOpenHelper

抽象类,我们通过继承该类,然后重写数据库创建以及更新的方法, 我们还可以通过该类的对象获得数据库实例,或者关闭数据库。

3.2、SQLiteDatabase

数据库访问类:我们可以通过该类的对象来对数据库做一些增删改查的操作。最核心的类!

3.3、Cursor

游标,有点类似于JDBC里的resultset,结果集!可以简单理解为指向数据库中某 一个记录的指针。

4、创建数据库与版本管理

Android给我们提供了SQLiteOpenHelper的两个方法:onCreate( )与onUpgrade( )来实现 onCreate(database):首次使用软件时生成数据库表。 onUpgrade(database,oldVersion,newVersion):在数据库的版本发生变化时会被调用, 一般在软件升级时才需改变版本号,而数据库的版本是由程序员控制的。

class MyHelper extends SQLiteOpenHelper{ public MyHelper(Context context){ super(context,"dzh.db",null,1);//数据库文件夹名为dzh.db } //数据库第一次创建时被调用 @Override public void onCreate(SQLiteDatabase db){ db.execSQL("CREATE TABLE person(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))"); } //软件版本号发生改变时调用 @Override public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){ }

上述代码第一次启动应用,我们会创建这个dzh.db的文件,并且会执行onCreate()里的方法, 创建一个person的表,它有两个字段:主键personId和name字段;接着如果我们修改db的版本号,那么下次启动就会调用onUpgrade()里的方法,这里我们没有去填写方法,感兴趣的小伙伴可以试一下!这就是创建数据库的模板代码!

5、实现增删改查

本项目使用Android给我们提供的操作数据库的一些API方法,先将它们集成在ContactsDao中,然后在增删改查四个Activity中,直接调用对应方法即可。下面教大家如何使用数据库进行增删改查操作:

首先打开数据库,想要访问数据库,第一步肯定先打开。 //打开数据库 public void open() throws SQLException { myDBOpenHelper=new MyDBOpenHelper(context); try { sqLiteDatabase=myDBOpenHelper.getWritableDatabase(); }catch (SQLException e){ sqLiteDatabase=myDBOpenHelper.getReadableDatabase(); } } 有开就有关,在操作完数据库后记得关闭数据库。 //关闭数据库 public void close(){ if(sqLiteDatabase!=null){ sqLiteDatabase.close(); sqLiteDatabase=null; } } 添加数据,想要添加数据就是通过values的键值对进行插入数据。 //添加联系人 public long addContacts(Contacts c){ //先创建集合对象 ContentValues values=new ContentValues(); //插入键值对 values.put("name",c.name); values.put("phone",c.phone); return sqLiteDatabase.insert("contacts",null,values); } 删除数据,肯定是根据主键来删除对应的记录,用的是where约束。 //删除联系人 public int deleteContacts(Contacts c){ return sqLiteDatabase.delete("contacts","name=?",new String[]{String.valueOf(c.name)}); } 修改数据,也是通过where约束找到对应键的记录,然后修改它的其他非键属性。 //修改联系人 public int updateContacts(Contacts c){ ContentValues value=new ContentValues(); value.put("phone",c.phone); return sqLiteDatabase.update("contacts",value,"name=?",new String[]{String.valueOf(c.name)}); } 查询数据,使用cursor游标,从第一行遍历到最后一行,在遍历每一行记录中,获得到每个字段的值,这样就获取到所有对象的数据了。 //根据姓名查找联系人 public Contacts getContacts(String name){ Cursor cursor=sqLiteDatabase.query("contacts",null,"name=?",new String[]{name},null,null,null); Contacts contacts=new Contacts(); while(cursor.moveToNext()){ contacts.name=cursor.getString(cursor.getColumnIndex("name")); contacts.phone=cursor.getString(cursor.getColumnIndex("phone")); } return contacts; } 四、项目效果

通讯录的运行演示视频如下:

Android Studio实现一个简单的通讯录

五、项目总结

本次通讯录项目主要考验学生对于SQLite数据库的使用,还是比较基础的,刚接触Android不久的同学只要动手打一遍就掌握了。这些数据库知识点在今后的Android项目中会经常使用,因此希望大家能够熟练掌握SQLite的使用,方便后续开发项目。

六、源码下载

点击右侧链接,即可下载源码:👉Android Studio实现通讯录项目👈

🍉还可以关注我的公众号《萌新加油站》,🍍后台回复:通讯录


🚀这有你错过的精彩内容

Android Studio实现选课系统

Android Studio实现校园二手交易系统

Android Studio实现仓库管理系统

Android Studio实现记事本项目

Android Studio如何实现音乐播放器

这凡尘到底有什么可留恋的? 原来,都是这些小欢喜啊。 它们在我的生命里唱着歌,跳着舞。 活着,也就成了一件特别让人不舍的事情。 2016.3.12 17:34 YXN


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #studio通讯录