Android备忘录的设计与实现
2019-05-24朱建明
朱建明
摘要: Android手机备忘录能给用户带来方便的体验。手机备忘录需要具备记事的添加、保存、浏览、删除等功能。使用Android ADT集成开发环境与Java语言进行备忘录的设计,用XML文件定义界面, 在Activity中呈现界面,利用Intent技术实现页面跳转,使用SQLite数据库保存事项的编辑时间、内容,对数据表进行查询,将查询结果以列表形式顯示在备忘录列表视图界面,并实现了单条事项编辑及删除功能。
关键词:备忘录;Android;类;事件处理;接口
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2019)09-0067-04
Abstract: Android phone memo can bring a convenient experience to users. The mobile phone memo needs to have the functions of adding, saving, browsing, and deleting notes. Use Android ADT integrated development environment and Java language to design memo, define interface with XML file, present interface in Activity, use Intent technology to realize page jump, use SQLite database to save the editing time and content of the item, query the data table , the query results are displayed in a list form on the memo list view. And the single item editing and deletion function has been implemented.
Key words:memo; Android; class; event processing; interface
1 概述
当今时代电子技术飞速发展,诞生了一代又一代手机。手机在人们的生活中成为不可缺少的必需品。目前的手机操作系统中,Android系统占据了半壁江山。
1.1 Android系统简介
Android是一种操作系统,它是基于Linux的,具有开放性,Android联盟允许任何移动终端厂商加入,主要使用于移动设备,如智能手机和平板电脑,由Google(谷歌)公司和开放手机联盟领导及开发,Android已经在手机市场中占据90%左右份额。目前最新版本是 Android 9.0pie。
1.2 SQLite数据库简介
SQLite是一款轻型的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用,在嵌入式设备中它占用资源很低,可能只需要几百K的内存,处理速度快。
1.3手机备忘录简介
现在的手机需要具备上网、照明、拍照、计算等功能,还需要有记事的功能。手机备忘录能够让用户随时记录生活工作中发生的重要事件,记录下未来要做的事。开发Android平台上的备忘录十分必要。
1.4 设计目标
实现备忘录的基本功能:添加事项的标题、内容并保存;列表显示出已保存的所有事项;修改、删除事项等。在手机备忘录APP开发完成后,经过打包签名,可运行在Andriod4.4及其以上版本。
1.5 开发环境和目标平台
1.5.1开发环境
1)Java开发工具,JDK1.7。
2)SQLite数据库。
3)集成开发环境,Eclipse IDE for Java EE Develops。
4)Android SDK 及其Eclipse开发插件ADT。
1.5.2目标平台
手机备忘录APP开发完成后,经过打包签名,可运行在目前市场上所有的Android手机上。
2功能分析
Android手机备忘录是为Android用户提供记事功能的项目,其目标是实现添加、编辑并保存事项,以及对已添加事件的操作,如查看、修改、删除等。在该应用的构建中要用到SQLite数据存储技术。总体功能框架如图1所示。
各模块功能如下:
列表显示事项:把所有已保存过的事项以列表形式在备忘界面上显示出来,可供用户选择。
修改事项:用户在列表界面选择某个事项后便全屏显示该事项内容,同时可对该事项进行修改。
删除事项:用户在列表界面长按某事项,可以实现对多个选定事项的删除。
增加事项:单击加号按钮,可以增加事项并保存。
3数据库设计
使用SQLite数据库管理系统,使用SQLite Expert Professional 5建立数据库和数据表再将数据库导入系统中。本数据库名为notesDB,只设计一张数据表,名为notes,用于保存事项信息。数据表结构如下:
4界面设计
该项目需要在res目录下新建三个XML布局文件,分别是notelist.xml、noteedit.xml 、notetiaomu.xml。notelist.xml是列表显示界面,noteedit.xml是事项编辑界面,notetiaomu.xml是单条事项显示界面,用来控制列表项显示格式。
5 功能实现
5.1定义数据库类
定义创建数据库的类NotesDB,继承自 SQLiteOpenHelper。
5.1.1 定义常量
定义字符串常量分别代表数据表名、事项ID号、事项内容、更新日期。
5.1.2 重写构造方法NotesDB(Context context)
通过super调用父类的构造方法。
5.1.3 重写方法onCreate(SQLiteDatabase db)
先将创建数据表的命令保存到字符串对象sql中,再通过执行db.execSQL(sql)实现数据表的创建。
5.1.4重写onUpgrade(SQLiteDatabase arg0, int arg1, int arg2)
该方法体为空语句。
5.2列表显示功能实现
定义Activity的子类 NoteMainActivity并实现接口OnScrollListener、OnItemClickListener和OnItemLongClickListener,分别重写接口中的所有方法,以实现列表滚动、单击条目和长按条目的事件处理。
5.2.1定义成员变量
声明列表视图类ListView的私有对象listview;
声明简单适配器类SimpleAdapter的私有对象simp_adapter;
声明泛型列表类private List
声明私有按钮类对象addNote;
声明私有文本视图类对象tv_content;
声明私有数据库创建类NotesDB对象DB;
声明私有数据库处理类SQLiteDatabase对象dbread;
5.2.2重写onCreate()方法
设置显示界面布局文件为notelist.xm,通过id获取界面组件的引用分别赋给listview、addNote、tv_content,创建对象mContext、dataList(泛型类对象)、DB、dbread。
处理“添加事项”按钮addNote的事件:通过Intent对象进行数据传递并打开事项编辑界面,事项被编辑保存后,调用自定义方法RefreshNotesList()刷新列表视图界面。分别监听列表视图listview的单击事项、长按事项、滚动查看事项事件。
5.2.3定义方法RefreshNotesList()
定义方法public void RefreshNotesList( )实现列表视图内容刷新,方法体:获取列表视图中事项的个数赋给整型变量size,若size>0,则通过使用适配器对象simp_adapter将方法getData()从数据表note中获取的所有记录内容更新到列表视图中。
5.2.4定义方法getData()
定义方法private List
5.2.5 实现接口OnScrollListener
重写接口OnScrollListener中的方法onScroll()处理列表条目滚动事件:方法体中无语句。
重写接口OnScrollListener中的方法public void onScrollStateChanged(AbsListView arg0, int arg1)处理列表视图listview界面的滚动状态改变事件,方法体内容:若arg1值为SCROLL_STATE_FLING则Log.i("main", "用户在手指离开屏幕之前,由于用力的滑了一下,视图能依靠惯性继续滑动");若arg1值为SCROLL_STATE_IDLE,则Log.i("main", "视图已经停止滑动");若arg1值为SCROLL_STATE_TOUCH_SCROLL,则Log.i("main", "手指没有离开屏幕,试图正在滑动")。
5.2.6 实现接口OnItemLongClickListener
重写接口中的方法public boolean onItemLongClick (AdapterView<?> arg0, View arg1, int arg2, long arg3)处理列表视图listview中某项的长按事件:
使用Builder模式创建警示消息对话框,该对话框标题为“删除该日志”,警示消息为“确认删除吗?”。
重写接口DialogInterface.OnClickListener中的onClick()方法處理对话框中“确定”按钮的单击事件,方法体内容:获取被长按的项目序号,在数据表中查询到该序号对应的项目记录并删除。
重写接口DialogInterface.OnClickListener中的onClick()方法处理对话框中“取消”按钮的单击事件,方法体内容为空。
返回true。
5.2.7 实现接口OnItemClickListener
重写接口中的方法public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)处理列表视图listview中的某项单击事件。方法体内容:根据单击条目的序号获取该条目的内容,在数据表note中查询该内容对应的记录,利用Intent和Bundle对象将被单击的事项内容传递给事项编辑界面并打开该界面。
5.2.8重写父类Activity中onActivityResult()方法
重写方法protected void onActivityResult(int requestCode, int resultCode, Intent data), 接受上一个页面返回的数据,并刷新页面。
5.3事项编辑功能实现
定义Activity的子类NoteEdit,定义成员变量,重写onCreate()及onActivityResult()方法,处理“保存”按钮和“取消”按钮你的单击事件。类体内容如下:
5.3.1 定义成员变量
声明TextView类对象tv_date用于显示日期,声明 private EditText et_content作为事项内容编辑框,声明“保存”按钮对象private Button btn_ok作为,声明“取消”按钮对象private Button btn_cancel,声明创建数据库的对象private NotesDB DB,声明处理数据库的对象private SQLiteDatabase dbread,定义整型类变量public static int ENTER_STATE = 0辨识当前事项是否是新增事项,声明字符串对象public static String last_content保存由列表视图界面传递来的事项内容,声明整型类变量public static int id表示当前被编辑事项的id。
5.3.2 重写父类Activity中onCreate()方法
设置显示界面布局文件为noteedit.xml,通过布局文件中定义的id获取界面中的日期显示视图tv_date、内容编辑框et_content、“保存”按钮对象btn_ok及“取消”按钮对象btn_cancel。设置软键盘自动弹出。创建对象DB及dbread,通过Bundle类对象bundle获取列表视图界面传递来的事项内容赋给last_content,将该内容显示在et_content中。
重寫接口OnClickListener中方法public void onClick(View arg0),处理“保存”按钮的点击事件:获取事项内容,获取事项创建或修改时间,创建Date类对象date,设置日期格式并将该日期转换为字符串显示在tv_date中。,
若ENTER_STATE==0且编辑框内容不为空,则在数据表中新增一条事项记录;若ENTER_STATE!=0则更新数据表中的事项记录。
重写接口OnClickListener中方法public void onClick(View arg0),处理“取消”按钮的点击事件:调用finish()方法实现当前界面的关闭。
5.3.3 重写父类Activity中onActivityResult()方法
重写方法protected void onActivityResult(int requestCode, int resultCode, Intent data),接受上一个页面返回的数据,并赋给字符串型类变量last_content。
6运行结果
运行该android备忘录项目,出现图7所示界面,单击“添加备忘录”按钮出现编辑备忘录界面如图9所示。在编辑界面中输入内容后单击“保存”按钮则将当前事项保存后返回更新后的列表视图界面如图10所示,若在图9所示界面中单击“取消”按钮,则不保存当前事项直接返回列表视图界面如图10所示。在列表视图界面中长按某项则出现警示框如图11所示。
7 结论
利用开发工具eclipse+adt开发了android平台上的备忘录APP,该备忘录实现了列表显示、添加事项、单条编辑保存、逐条删除等功能。该应用还需要进一步完善,可以增加批量删除、定时提醒等功能。
参考文献:
[1] 肖琨. Android Studio移动开发教程 [M]. 北京: 电子工业出版社出版, 2019..
[2] 王向辉,张国印,沈洁.Android应用程序开发[M]. 3版.北京:清华大学出版社,2016.
[3] 刘国柱,杜军威,QST青软实训. Android程序设计与开发(Android Studio版) [M]. 北京:清华大学出版社,2017 .
[4] 郭霖.第一行代码 Android [M]. 2版.北京:人民邮电出版社,2016.
[5] 156庄威龙. Android简易记事本[EB/OL]. https://www.cnblogs.com/lger/p/7920159.html.
[6]. Mr_cqh. Android项目实战——一个简单的记事本程序[EB/OL]. https://blog.csdn.net/Mr_cqh/article/details/80967084.
【通联编辑:谢媛媛】