




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 毕 业 论 文院 系 信息科学与工程学院 专 业 软件工程 题 目 基于安卓的名片管理APP设计与实现年 级 12级 学号 学生姓名 指导老师 职称 讲师 论文提交日期 2016.4.13 南京大学金陵学院 毕业设计(论文)摘 要随着网络技术、数字化技术的发展,智能手机占据了我们日常生活中很大一部分。Android智能操作系统也是日益普及。普通的通讯录已经不能满足我们的日常需要,系统自带的通讯录仅仅实现了对联系人信息的录入和查看等基础功能,因此人们希望有一个更加方便的通讯录。如果能将手机和名片结合,可以提高商务人员的办公效率,加速获取信息的速度,给我们生活提供极大的便利。本软件是一个基于安卓平台的通讯录。文中首先介绍了安卓系统的发展和程序的开发方法,其次阐述了通讯录的总体结构、文件体系结构以及数据库的使用,然后通过功能说明、流程图说明、界面介绍、实现方法等不同模块详细的介绍了添加联系人、修改联系人、删除联系人、显示联系人列表、生成联系人二维码、扫描二维码、同步更新等7 个方面的实现方法。关键词: Android;通讯录; 实现方法; 全套设计加扣 3012250582Contacts APP based on the Android platformABSTRACT.With the development of network technology and digital technology, smart phone occupies a large part of our daily life. Android OS is also more and more popular. Every phone system comes with an ordinary contacts, but it already have not meet our daily needs. The contacts just implement some fundamental functions such as importing, checking the contact information and so on.So people want to have a more convenient address book. If it can combine mobile phone and card, the efficiency of business personnel office will be improved and the speed of access to information will be accelerated. Our life will also be provided with great convenience.The contacts are based on android platform. Firstly this paper introduces the development of the android system and the methods of development procedure. Secondly it expounds the overall structure of the contacts and file system and the database. Then it minutely introduces the implement methods of seven aspects including adding contacts, modifying contacts, deleting contacts, showing the contacts list, generating QR code, scanning the QR code and synchronously updating with different modules such as function description, flow chart, interface introduction, implement methods.Keywords:Android; Contacts; Methods;目 录摘 要iABSTRACTii第一章 绪 论11.1 研究背景和意义11.2 相关研究综述11.3 论文工作及其内容2第二章 需求分析32.1 可行性分析32.1 用户需求52.2 功能需求5第三章 概要设计63.1 基本设计思想63.2 运行环境63.3 系统功能示意图63.4 功能模块6第四章 详细设计84.1 显示模块设计说明84.2 二维码模块设计说明94.3 导入导出模块设计说明94.4 上传下载模块设计说明9第五章 编码115.1 开发环境115.2 文件结构与用途125.3 数据库的创建155.4 联系人列表155.5 二维码扫描255.6 联系人信息的导入导出285.7 备份信息上传下载34第六章 测试和演示396.1 测试概述396.2 测试内容40结束语41致谢 43参考文献44iv 第一章 绪 论1.1 研究背景和意义随着智能手机的越来越普及,Android智能操作系统被大家所熟悉,人们现在已经能通过Android智能手机来实现很多功能。比如网上购物、文本编辑、即时通讯等等。在全球化的趋势之下,人与人之间的交流也越来越频繁。当然,其中最主要的还是对联系方式的依赖。基于安卓平台的通讯录系统主要是实现了对联系人信息的添加、修改、删除操作等等。另外,由于现在人们在询问号码的时候会疏忽大意,打错号码,所以本系统中添加了对联系人信息的二维码扫描和识别,极大方便了存储联系人的操作,也避免了出错的可能。另外,对于通讯录的备份操作也极大方便了对于操作的误删,基础实现了云同步更新的功能。1.2 相关研究综述系统基于安卓平台,Android一词本意是指“机器人”,当然现在大家都知道它是Google公司推出的一款开源手机操作系统。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。完全整合的全移动功能性产品成为“开放手机联盟”的最终目标1。Android 作为Google移动互联网战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。Google的目标是让移动通信不依赖于设备,甚至是平台。出于这个目的,Android 将完善而不是替代Google长期以来推行的移动发展战略:通过与全球各地的手机制造商和移动运营商成为合作伙伴,开发既实用又有吸引力的移动服务,并推广这些产品1。在2012年,Android手机的全球销量为4.815亿部,占据了全球智能手机68.8%的市场份额。在2013年,这个数字上升到了7.812亿、78.9%,这是一个相当惊人的数字2。二维条码/二维码(2-dimensional bar code)是用特定的几何图形按一定规律在平面分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用多个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点3。我国对二维码技术的研究开始于1993年。中国物品编码中心对几种常用的二维码PDF417、QRCCode、Data Matrix、Maxi Code、Code 49、Code 16K、Code One的技术规范进行了翻译和跟踪研究。随着我国市场经济的不断完善和信息技术的迅速发展,国内对二维码这一新技术的需求与日俱增。中国物品编码中心在原国家质量技术监督局和国家有关部门的大力支持下,对二维码技术的研究不断深入。在消化国外相关技术资料的基础上,制定了两个二维码的国家标准:二维码网格矩阵码(SJ/T 11349-2006)和二维码紧密矩阵码(SJ/T 11350-2006),从而大大促进了我国具有自主知识产权技术的二维码的研发4。1.3 论文工作及其内容本论文主要涉及在设计和开发当中的过程。包括开发程序的搭建、需求分析、概要设计、详细设计、编码、测试等工作。本应用采用结构化的开发方法。结构指系统内各组成要素之间的相互联系、相互作用的框架。结构化开发方法强调系统结构的合理性以及所开发的软件的结构的合理性,主要是面向数据流的,因此也被称为面向功能的软件开发方法或面向数据流的软件开发方法。结构化技术包括结构化分析、结构化设计和结构化程序设计三方面内容5。第二章 需求分析 2.1 可行性分析根据互联网消费调研中心(ZDC)2016年2月的手机市场分析报告,中国目前手机市场一片繁荣,尤其是智能手机的普及给大家带来很多便利。其中大多数人关注的一些主流品牌中除了苹果手机,其他都是采用的Android智能操作系统,见图2-1、图2-2:图 2-1 手机品牌关注度图 2-2 中国智能手机市场品牌关注比例分布另外,从操作系统格局来看,2月搭载Android操作系统的智能手机获得75.9%的关注比例,较上月微涨0.6%,见图2-3:6图 2-3 中国智能手机市场不同操作系统产品关注对比因此在Android平台上开发这样的一款通讯录受用群体非常广泛。是一个可以研究的课题。2.1 用户需求用户体验以存储方便为主,因此,本软件的设计上以简约、清晰为主,各个功能一目了然,便于用户的方便查找和使用。另外,本软件必须严谨高效,方便用户的存储查看,同时也要保证用户的资料信息不易流失。2.2 功能需求2.2.1 显示联系人:将联系人的信息以列表方式展出;2.2.2 添加联系人:创建新的联系人信息,并保存;2.2.3 删除联系人:删除联系人从系统中删除;2.2.4 修改联系人:修改联系人的相关信息,并保存;2.2.5 显示联系人二维码:将联系人信息转换成二维码,并显示;2.2.6 扫描二维码:通过摄像头扫描并读取联系人信息保存;2.2.7 同步更新:实现联系人信息的备份保存。第三章 概要设计3.1 基本设计思想1、联系人信息以保存在数据库中,便于查找修改;2、用eclipse平台的Android开发插件进行开发设计;3、调用Zxing开源项目包来实现对二维码的扫描和读取;4、通过tomcat平台模拟云同步功能;3.2 运行环境Android智能操作系统的手机,且带有摄像头;内存最低为512MB,且安卓版本高于2.3;3.3 系统功能示意图具体功能示意图见图3-1:用户界面列表显示添加联系人删除联系人修改联系人显示二维码二维码扫描保存上传备份文件云备份下载备份文件导出联系人信息更新联系人信息图 3-1 系统功能示意图信息备份3.4 功能模块3.4.1显示模块;将数据库列表中已存联系人信息展示出来。并添加长按触发事件,便于跳转到其他模块实现功能。另外,在显示模块中需要添加刷新功能,便于每次对联系人列表的更新操。3.4.2 添加模块;首先需要提供两个文本编辑器来接受用户的输入。其次,设置两个按钮来监听用户操作,分别响应用户的保存和取消操作。在保存操作中,需要涉及到对数据库的操作。3.4.3 删除模块;删除模块作为一个方法来调用。提示用户是否确认删除,防止误操作。在确认删除后,通过相应的位置来识别数据库中的元素,实现删除操作。3.4.4 修改模块;修改模块的界面应该和添加模块相同,同样是两个文本输入器和两个按钮。不同之处在于文本编辑器里默认值应该是被修改的联系人信息。另外,在保存操作中应该是对数据库的更新操作。3.4.5 二维码生成模块;将联系人的信息首先读取为字符串形式,再调用相应的编码方法将字符串转变为二维码图像,并显示出来。3.4.6 二维码扫描模块;扫描模块中涉及系统相机的调用,通过相机的捕获到二维码信息转化为字符串,并调用字符串识别方法,将联系人信息格式化,并保存到数据库中去。3.4.7 信息同步上传模块;将数据库中的联系人信息导出,生成文件,并通过调用网络接口上传到服务器中去,以实现信息备份。3.4.8 更新联系人信息模块;将服务器中的备份文件下载到本地,并读取,保存到系统数据库中,同时更新联系人列表。第四章 详细设计4.1 显示模块设计说明4.1.1 联系人列表联系人列表的显示是整个软件系统的核心界面,也是跳转到其他界面的源头,实现的功能较多。主要是运用Android系统里面的ListView控件来实现。ListView控件它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。列表的显示需要三个元素:1ListVeiw(用来展示列表的View);2适配器(用来把数据映射到ListView上的中介);3数据(具体的将被映射的字符串,图片,或者基本组件)。其中最核心的是对适配器的处理操作。适配器(Adapter)可以自定义ListView中的item的内容,比如图片、多选框等,通过适配器将联系人的姓名和联系方式联系到一起,添加到列表中。4.1.2 数据库由于Android系统自带SQLite这种轻量级的数据库,而且,本软件对数据的要求也不是太高,所以采用SQLite来存储联系人基础信息。SQLite数据库主要涉及四个操作:创建表:通过继承SQLiteOpenHelper类来实现。调用execSQL()方法创建一个表。其中定义一个主键id,依次增加,表示顺序;另外定义两个字符类型字段,保存联系人姓名和联系方式。添加操作:在创建完数据库实例后,调用getWritableDatabase()方法以读写方式打开数据库。再创建一个ContentValues实例来接收联系人信息,最后再调用数据库insert()方法添加到数据库中。修改操作:同样是创建ContentValues实例来接收联系人信息,不同的是在修改的同时是调用update()方法来修改数据库信息。删除操作:删除数据库记录主要是通过获取该条记录的主键id,从而调用delete()方法来删除该条记录。4.1.3 添加联系人添加联系人界面中添加两个EditView控件,用来获取用户输入的联系人信息。另外还有两个Button按钮控件,一个为保存,一个为取消操作。另外在程序中设置对Button按钮的监听事件。从而相应点击事件,来实现调用数据库操作,完成添加联系人操作。4.1.4 修改联系人修改联系人界面和添加联系人界面相同,但是EditView控件中应该有默认修改的联系人信息,便于用户修改。4.1.5 删除联系人删除联系人没有独立的界面,只是实现一个基础方法。通过获取待删除联系人在数据库中的位置,即moveToPosition()方法,从而来实现系统的删除操作。在删除操作的执行之前,系统应当通过AlertDialog实例来给用户一个提示信息,避免误操作。4.2 二维码模块设计说明4.2.1 生成联系人二维码首先应当将联系人信息获取到,并将联系人姓名和电话合并成为一个新的字符串。并通过Zxing开源项目的中的接口createQRCode()方法来生成一个Bitmap图像来显示。4.2.2 扫描二维码同样是调用Zxing开源项目中的CaptureActivity实例操作来调用系统相机功能,并通过系统相机捕获二维码信息,接下来将该信息保存到联系人列表中。4.3 导入导出模块设计说明4.3.1 导出联系人信息导出联系人信息是通过xml文件来存储已有联系人的相关信息,并按照一定的格式来记录。实现方法只是要创建一个xml文件再读取数据库中数据写入其中。4.3.2 导入联系人信息通过联系人信息进行更新操作实际上是对联系人信息备份信息xml文件的解析工作。可以使用DOM方法来解析xml文件,然后将它恢复到数据库中。4.4 上传下载模块设计说明4.4.1 上传备份信息将已导出的xml文件通过http方式去上传到服务器文件夹。需要建立一个服务器,并接受客户端的请求。通过android-async-http开源项目包里面的客户端post()来进行实现文件的上传。4.4.2 下载备份信息同样是通过android-async-http开源项目包里面的客户端的get()方法来获取服务器端的文件,并保存到本地。第五章 编码5.1 开发环境Eclipse 是开发Android应用程序的首选集成开发环境。Eclipse作为开源的Java开发环境,功能强大,易于使用。Android提供了在Eclipse上开发Android应用程序的ADT插件(Android Development Toolkit,ADT),简化了Android应用程序的开发、运行和调试7本系统用的是Android 5.0.1版本,Eclipse版本号为Mars 4.5.1,Java版本为1.7.0_80,SDK版本为.1 安装JDK和Eclipse在安装Eclipse之前,首先要安装Java的运行环境(JRE),因为Eclipse是采用Java编写的开发工具,需要JRE才能运行。JDK下载地址:/technetwork/java/javase/downloads/index.html。另外,在安装完JDK后还要对计算机设置环境变量(JAVA_HOME、PATH、CLASSPATH)。Eclipse下载网址为/downloads/。在解压后,只要设置工作目录即可。5.1.2 安装Android SDKAndroid SDK下载地址是:/sdk/index.html。AndroidSDK作为Android软件开发工具包是谷歌公司未来提高Android应用程序开发效率,减少开发周期而提供的辅助开发工具、开发文档以及程序规范。下载完成后,运行即可下载所需版本的Android版本。5.1.3 安装ADT插件ADT插件是Eclipse开发环境的定制插件,为开发Android应用程序提供了一个强大完整的开发环境。可以快速建立工程、界面和基于Android API的组件,而且还能够在Eclipse里使用SDK包含的调试工具等等。Eclipse可以自动下载ADT,通过Help- Install New Software中的Add Repository,在地址栏中输入/android/eclipse/(见图5-1),Eclipse会自动下载ADT。完成ADT安装后,只需配置一下SDK的位置就可以了7。图 4-1 自动安装ADT5.2 文件结构与用途本系统命名为Contact,意为通讯录。工程源代码主要是src目录(源文件目录,见图5-2)、Layout目录(布局文件目录,见图5-3)、AndroidManifest(程序配置文件)等图 5-2 源文件目录结构 图 5-3 布局文件目录结构5.2.1 src源文件目录src目录下为本系统最核心的操作实现,根据不同的功能进行分类。其中各个文件含义参见表5-1:表 5-1 源文件所属关系表包名文件名备注databaseDb.java数据库建表操作NameList.java联系人列表界面ShowName.java联系人详细信息界面AddNew.java添加新联系人界面UpdataName.java修改联系人界面Personal.java个人信息界面qrcodeQrshow.java生成二维码界面ScanQrcode.java扫描二维码界面backupsExport.java联系人信息导出Update.java联系人信息更新UpdateExport.java信息更新界面httpDownload.java下载备份文件Upload.java上传备份文件5.2.2 Layout布局文件目录布局文件目录下主要是存放各个Activity的控件布局,本系统主要使用的控件为TextView、EditView、Button、ImageView、ListView等。具体说明参见表5-2:布局文件名所属Activity文件名备注activity_name_list.xmlNameList.javaNamelist_cell.xmlListView适配格式activity_add_new.xmlAddNew.javaactivity_updata_name.xmlUpdataName.javaactivity_personal.xmlPersonal.javaactivity_show_name.xmlShowName.javaactivity_qrshow.xmlQrshow.javaactivity_scan_qrcode.xmlScanQrcode.java表 5-2 布局文件所属关系表5.2.3 AndroidManifest配置文件AndroidManifest.xml作为一个清单文件有很多功能。比如给应用程序命名;描述应用程序的组件;声明所需权限;声明应用所需的API最低级别;声明链接外部库等。本软件主要是涉及到二维码、导出导入备份信息和联网上传下载,所以必须调用系统相机来实现。在AndroidManifest配置文件中要添加相关权限。添加内容见表5-3:表 5-3 权限添加表权限代码说明相机权限振动权限联网权限 SD卡写入数据权限SD卡中创建与删除文件权限5.3 数据库的创建作为通讯录,首要功能就是保存联系人的基础信息。因此本软件采用安卓系统内嵌的轻量级SQLite数据库来存储信息。创建Db.java文件,来定义一个数据库类。该类继承自SQLiteOpenHelper类。首先重载父类的构造方法,super(Context context, String name, CursorFactory factory, int version) 。其中第一个参数为当前Activity名,第二个参数为数据库名,第三个参数为可选的游标,通常为null,最后一个为数据库版本号。然后在onCreate()方法中添加创建数据库代码。调用execSQL()方法,直接可以使用SQL标准语句来建表。public class Db extends SQLiteOpenHelper public Db(Context context)super(context,db,null,1);public void onCreate(SQLiteDatabase db) / TODO Auto-generated method stubdb.execSQL(CREATE TABLE addressbook(+ _id INTEGER PRIMARY KEY AUTOINCREMENT,+ name TEXT DEFAULT , + email TEXT DEFAULT , + addr TEXT DEFAULT , + num TEXT DEFAULT );_id是每个联系人的唯一编号,并且逐个递增;name字段存储联系人姓名;num字段存储联系人号码;email字段存储联系人电子邮箱;addr字段存储联系人地址。5.4 联系人列表5.4.1 联系人显示在首页界面上显示已有联系人列表,使用的是ListView控件来展示。其中每个Item中通过一个适配器来显示:adapter = new SimpleCursorAdapter(this, R.list_cell, null, new Stringname, num, new intR.id.tvName, R.id.tvNum);setListAdapter(adapter);其中R.list_cell是适配器的布局文件。5.4.2 数据库内容读取要显示已有联系人信息,必须先将数据库内容读取出来。通过SQLiteDatabase实例来进行对数据库的访问操作。另外,在获得SQLiteDatabase实例dbRead后,调用query()方法对数据查找,并返回查找数据。因为每次添加、修改或者删除联系人操作后,都必须进行一次数据查找,所以可以创建一个刷新方法来方便调用。public void refreshListView() Cursor c = dbRead.query(addressbook, null, null, null, null, null, null);adapter.changeCursor(c);需要说明的是,定义一个游标Cursor c来接收数据库查找结果,并通过adapter的changeCursor()方法来将结果放入适配器中显示到界面上。5.4.3 联系人详情查看因为在列表上通常仅仅显示联系人的姓名和电话,如果我们要查看联系人的电子邮箱或者是地址信息,则需要点开联系人查看详情。要实现这个功能我们可以调用AdapterView.OnItemClickListener类来实现。AdapterView.OnItemClickListener可以监听用户点击事件,从而响应用户操作。当然,该类需要实现onItemClick()方法。在onItemClick()方法中,通过传递position位置参数来启动详情页,从而调用ShowName界面来显示联系人其他信息。在该方法中,需要定义Cursor类的实例来接收下标信息;定义一个Bundle类来封装要传递的位置信息;最后还需要一个Intent类来传递给ShowNameprivate AdapterView.OnItemClickListener ListViewItemClickListener = new AdapterView.OnItemClickListener() public void onItemClick(AdapterView parent, View view, int position, long id) Cursor c = adapter.getCursor();c.moveToPosition(position);int itemId = c.getInt(c.getColumnIndex(_id);Intent i = new Intent(NameList.this, ShowName.class);Bundle bundle = new Bundle();bundle.putInt(deptname, itemId);i.putExtras(bundle);startActivity(i);.java的activity界面。在ShowName界面中定义了多个TextView来接收联系人相应的信息。name = (TextView) findViewById(R.id.showName);num = (TextView) findViewById(R.id.showNum);email = (TextView) findViewById(R.id.showEmail);addr = (TextView) findViewById(R.id.showAddr);然后再通过Bundle类来读取从联系人界面传递过来的位置参数。第一步是通过getIntent()方法获取刚刚传入的Intent值;再调用getExtras()方法来获取Bundle值;最后通过deptname值来取得刚刚的position,并将其存入int i值中方便使用。Bundle bundle = new Bundle();bundle = this.getIntent().getExtras();i = bundle.getInt(deptname);在取得了位置信息后,我们还需要做的一个操作是根据位置下标在数据库中查找对应的联系人。db = new Db(this);dbread=db.getReadableDatabase();Cursor c = dbread.query(addressbook,new Stringname,_id=?,new String+i,null,null,null);if(c.moveToFirst()name.setText(c.getString(0);同样,我们首先要实例化一个SQLiteDatabase类,并通过getReadableDatabase()方法给它初始化。这里同样用到了query()方法,但是和刚刚列表中的使用方法又有区别。列表中我们需要展示所有联系人信息,因此我们对查找要求设置为null,即查找所有联系人。而在这里,我们给它一个参数i,查询与数据库中的字段_id匹配的记录,如果查找成功我们需要获得name字段中的值。这里的返回值是Cursor类,用来指向name字段中的值。然后用同样的方法获得其他字段,并将文本内容在TextView中显示出来。因为我们查询是根据_id来的,所以一般情况下只有唯一一个对应值,调用moveToFirst()方法来获得返回结果。5.4.4 添加联系人在添加联系人界面中,我们需要几个TextView和EditView控件来提示和输入联系人信息,两个Button按钮来监听保存和取消操作。再输入完成之后,我们接下来需要对数据库进行写入操作,和前面操作相同,实例化数据库和操作数据库实例(这里我们需要写入,而不是读取所以调用getWritableDatabase()方法)。另外对Button按钮要实现一个监听操作(setOnClickListener()方法),用来相应用户输入。public void onClick(View v) if(etname.getText().toString().equals()|etnum.getText().toString().equals()Toast.makeText(AddNew.this, 联系人或电话号码为空!, Toast.LENGTH_SHORT).show();finish();elseContentValues cv = new ContentValues();cv.put(name, etname.getText().toString();cv.put(num, etnum.getText().toString();cv.put(email, etemail.getText().toString();cv.put(addr, etaddr.getText().toString();dbwrite.insert(addressbook, null, cv);finish();从用户体验角度出发,当联系人姓名和电话号码为空时,系统应当不予保存,所以我们在监听操作中首先执行的是一个if条件判断,如果为空,通过Toast类在界面上显示一个错误提示。Toast的makeText()方法有三个参数,第一个是Context,指明当前上下文环境,第二个参数String是要显示的文本内容,第三个显示时长。当不为空时,我们接下里创建一个ContentValues实例,ContentValues可以存储基本数据类型,在本软件中所要保存也是这些基本数据类型,通过put()方法来将用户输入的信息进行封装。put()方法是通过键值对来存储的,我们一一对应即可。最后当数据封装完毕后,调用SQLiteDatabase的insert()方法将数据写入数据库中,注意insert()方法的参数,第一个是数据库中的表名,第二个参数是防止底层数据库的空插入,这里不作过多解释,通常情况下设置为null,第三个参数即为我们刚刚封装好的。实际操作过程见图5-4:图 5-4 添加联系人操作5.4.5 修改联系人修改联系人操作其实是和联系人查看是相通的。不同的是联系人详情查看操作是不可修改的,也就是信息被放入TextView中;而修改联系人则是将读取的联系人放入EditView中,便于用户修改,这部分内容这里不作重复说明。另外,在用户修改完毕后,执行保存操作,需要注意的是,这里不是向数据库添加新联系人,因此我们调用的是SQLiteDatabase的update()操作。dbwrite.update(addressbook, cv, _id=?,new String+i);update()方法和insert()方法类似,第一个参数为数据库表名;第二个为封装好的ContentValues类型数据;后面两个参数则是和query()查询方法类似,用来定位修改位置。实际操作过程见图5-5: 图 5-5 修改联系人操作5.4.6 删除联系人删除联系人操作同样是要通过position位置参数来进行删除,首先要获得该联系人在数据库中下标_id,根据下标调用delete()方法进行删除。另外,通常为了防止用户误操作,我们在删除过程中要给出一个信息提示。消息提示我们用Android系统内的AlertDialog类来实现。需要说明的是AlertDialog中几个常用的方法:setTitle(String):设置标题;setMessage(String):设置提示信息;setNegativeButton(String,OnClickListener):设置取消操作;setPositiveButton(String,OnClickListener):设置确定操作;new AlertDialog.Builder(NameList.this).setTitle(提醒).setMessage(您确定要删除该联系人吗?).setNegativeButton(取消, null).setPositiveButton(确定, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) Cursor c = adapter.getCursor();c.moveToPosition(MID);int itemId = c.getInt(c.getColumnIndex(_id);dbWrite = db.getWritableDatabase();dbWrite.delete(addressbook, _id=?, new StringitemId + );refreshListView();).show();这里我们在将删除操作放到确定监听器当中,这样我们可以在接收到用户确定后再进行操作删除。实际操作见图5-6: 图 5-6 删除联系人操作5.4.7 界面菜单栏联系人列表中要有一个菜单,便于用户跳转到其他功能。通常在Activity类创建的时候,系统就自动为我们自动实现了onCreateOptionsMenu()方法和onOptionsItemSelected()。public boolean onCreateOptionsMenu(Menu menu) getMenuInflater().inflate(R._list, menu);return true;public boolean onOptionsItemSelected(MenuItem item) int id = item.getItemId();if (id = R.id.action_settings) return true;return super.onOptionsItemSelected(item);当然,menu菜单的配置文件在/res/menu/目录下,是一个标准的xml文件,包含了菜单选项的id和title。 而对菜单点击的触发事件我们需要添加到onOptionsItemSelected()方法中去。通常做法是用一个switch语句来进行判断。public boolean onOptionsItemSelected(MenuItem item) int id = item.getItemId();switch(id)case R.id.add:startActivity(new Intent(NameList.this, AddNew.class);break;case R.id.scan:startActivity(new Intent(NameList.this, ScanQrcode.class);break;case R.id.update:startActivity(new Intent(NameList.this, UpdateExport.class);break;return true;实现效果见图5-7:图 5-7 菜单选项5.4.8 列表的快捷菜单在通常操作中,我们对联系人的增删改查仅仅是对列表操作,如果使用系统菜单将会显得特别麻烦,影响用户体验。这里我们可以实现ItemLongClick()方法,也就是长按操作,方便用户使用。首先第一步操作就是要创建一个快捷菜单:private void ItemLongClick() getListView().setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) menu.add(0, CONTEXT_MENU_1, 0, 修改联系人);menu.add(0, CONTEXT_MENU_2, 1, 删除联系人);menu.add(0, CONTEXT_MENU_3, 2, 显示二维码););接下来我们需要实现onContextItemS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃嘉峪关市供销合作社招聘公益性岗位人员2人备考练习试题及答案解析
- 2025国铁投资发展有限公司第一批次招聘4人(天津)备考考试题库附答案解析
- 2025云南保山市龙陵县民政局招聘龙陵县殡仪馆临时人员15人备考考试题库附答案解析
- 2025广东阳江市阳西县补充招聘森林消防应急队员7人备考练习题库及答案解析
- 2025年合肥市巢湖市大学生乡村医生专项计划招聘2名备考考试题库附答案解析
- 工厂安全培训教育总结课件
- 宇宙之谜揭秘
- 价格谈判机制优化-洞察及研究
- 心律失常导管消融研究-洞察及研究
- 区域创新管理制度
- 尿管相关血流感染防控与管理
- 小学三年级英语评价方案
- 2025年秋期人教版五年级上册数学全册核心素养教案(教学反思有内容+二次备课版)
- 固废再生资源回收中心项目建设方案
- 机关单位会计试题及答案
- 重症护理超声专家共识
- AI 智能体运行安全测试标准(英文)
- 韩国历史文化课件
- 2025年中考体育笔试题
- 北京辅助生殖管理办法
- 地图拼图活动方案
评论
0/150
提交评论