书签 分享 收藏 举报 版权申诉 / 121
上传文档赚钱

类型Android开发工程师第七章-数据存储与访问课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5193251
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:121
  • 大小:1.02MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Android开发工程师第七章-数据存储与访问课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Android 开发 工程师 第七 数据 存储 访问 课件
    资源描述:

    1、教学目标 掌握SharedPreferences的原理与使用方法。掌握访问Android内部文件的方法。掌握手机SD卡的访问方法。了解手动创建SQLite数据库的方法以及对SQLite数据库的访问方法。掌握使用代码创建以及访问SQLite数据库的方法。理解ContentProvider的原理和用途。掌握ContentProvider的创建与使用方法。目录概述概述个人信息注册的设计与实现个人信息注册的设计与实现电话号码文件存储的设计与实现电话号码文件存储的设计与实现SD卡文件访问的设计与实现卡文件访问的设计与实现简单记事本的设计与实现简单记事本的设计与实现成绩共享示例的设计与实现成绩共享示例的设

    2、计与实现访问通讯录的设计与实现访问通讯录的设计与实现本章小结本章小结项目实训项目实训概 述 Android系统提供了多种数据存储的方法,其中包含SharedPreferences、文件存储、访问外部存储器SD卡,以及SQLite数据库。其中SharedPreferences只能存储简单的键值对,文件存储可以存储各种类型的文件,SQLite数据库为应用程序提供数据库的支持。此外,Android还提供了ContentProvider组件,可以使应用程序共享底层的数据,如使用ContentProvider访问Android系统中的通讯录等。目录个人信息注册的设计与实现个人信息注册的设计与实现电话号码

    3、文件存储的设计与实现电话号码文件存储的设计与实现概述概述SD卡文件访问的设计与实现卡文件访问的设计与实现简单记事本的设计与实现简单记事本的设计与实现成绩共享示例的设计与实现成绩共享示例的设计与实现访问通讯录的设计与实现访问通讯录的设计与实现本章小结本章小结项目实训项目实训个人信息注册的设计与实现 SharedPreferences是Android为开发人员提供的一种简单的数据存储方式,是一种轻量级的数据保存方法,通过SharedPreferences开发人员可以将数据以NVP(Name/Value Pair,名称/值对)的形式保存在Android的文件系统中,下面通过一个个人信息注册的示例,来

    4、介绍SharedPreferences的原理和使用方法。个人信息注册的设计与实现 预备知识 过SharedPreferences写数据 在使用SharedPreferences时,需要使用getSharedPreferences()方法获取一个SharedPreferences对象,代码如下所示:SharedPreferences preference=getSharedPreferences(fileName,MODE);getSharedPreferences()方法有两个参数,第一个参数为在文件系统中创建的文件名,第二个参数是文件的访问模式,SharedPreferences支持以下3种

    5、访问模式。个人信息注册的设计与实现访问模式说明私有(MODE_PRIVATE)只有创建文件的程序可以读和写全局读(MODE_WORLD_READABLE)创建文件的程序可读可写,其他程序只能读全局写(MODE_WORLD_WRITEABLE)创建文件的程序可读可写,其他程序只能写。表7.1 模式说明有时需要将SharedPreferences的访问模式定义为既可全局读也可以全局写,那么可以将两种模式相加,代码如下:public static int MODE=Context.MODE_WORLD_READABLE+Context.MODE_ WORLD _WRITEABLE;个人信息注册的设计

    6、与实现 获得SharedPreferences对象后,需要通过SharedPreferences.Editor类对文件内容进行编辑,最后调用commit()方法提交修改的内容,代码如下所示:SharedPreferences.Editor editor=preference.edit();editor.putString(name,name);editor.putInt(age,age);editor.putBoolean(isBoy,isBoy);editor.putFloat(weight,weight);mit();个人信息注册的设计与实现 通过SharedPreferences读数据

    7、当需要从已经存在的SharedPreferences文件中读取数据时,仍然先通过getShared-Preferences()获取SharedPreference对象,然后通过SharedPreference对象的get()方法,从文件中取出相应数据,get()方法的第一个参数是变量名称,第二个参数是默认值,即如果没有成功取出第一个参数指定的变量的值,那么该变量使用默认值。代码如下所示:SharedPreferences preference=getSharedPreferences(fileName,MODE);msg+=姓名:+preference.getString(name,张三)+,

    8、;msg+=年龄+preference.getInt(age,22)+,;个人信息注册的设计与实现 SharedPreferences创建的文件不仅创建程序本身可以访问,其他程序同样可以访问,前提是文件的访问模式必须设有相应的权限。下面用一个示例说明:public class OtherSharedPreferencesDemo extends Activity TextView tvMessage;public static final String fileName=SimpleFile;public static int MODE=Context.MODE_WORLD_READABLE

    9、+Context.MODE_WORLD_WRITEABLE;public static final String PACK=cn.edu.nnutc;Override public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);tvMessage=(TextView)findViewById(R.id.tvMessage);Context context=null;个人信息注册的设计与实现 try context=this.crea

    10、tePackageContext(PACK,Context.CONTEXT_IGNORE_SECURITY);catch(NameNotFoundException e)e.printStackTrace();String msg=;SharedPreferences preference=context.getSharedPreferences(fileName,MODE);msg+=姓名:+preference.getString(name,张三)+,;msg+=年龄+preference.getInt(age,22)+,;if(preference.getBoolean(isBoy,tr

    11、ue)msg+=性别:男;else msg+=性别:女;msg+=,+体重:+preference.getFloat(weight,42);tvMessage.setText(msg);个人信息注册的设计与实现 上述代码中首先通过createPackageContext()方法获取创建文件的程序所在的Context,该方法第一个参数是包的名称,第二个参数Context.CONTEXT_IGNORE_SECURITY是忽略可能产生的安全问题。然后通过调用context的getSharedPreferences()方法获得SharedPreferences对象,最后通过SharedPreferen

    12、ces对象获取保存的数据。个人信息注册的设计与实现 个人信息注册的实现 下面用一个示例演示如何使用SharedPreferences进行简单的数据库存储。首先建立如图7.1所示界面,用户在编辑框中输入相应的信息后,单击“写入信息”按钮,可以将用户信息写入到SharedPreferences中,当单击“读取信息”按钮时,即可将保存的用户信息读取出来显示到界面的最下方。图图7.1 示例运行界面示例运行界面个人信息注册的设计与实现 SharedPreferences建立的文件保存在/data/data/shared_prefs目录下。可以通过FileExplorer查看,如图7.2所示。图7.2 S

    13、haredPreferences所在目录个人信息注册的设计与实现 在shared_prefs目录下就是程序创建的文件SimpleFile.xml,-rw-rw-rw-是Linux内核中文件的权限,文件的权限分别为创建者、同组用户以及其他用户对文件的权限,d表示目录,x表示可执行,r表示可读,w表示可写,-表示没有此权限。-rw-rw-rw-表示文件创建者和同组用户,以及其他人对文件具有可读和可写权限。个人信息注册的设计与实现 SimpleFile.xml文件是以XML格式保存的,内容如下:张三个人信息注册的设计与实现 写入信息按钮功能实现代码class btnWriteListener imp

    14、lements OnClickListener Override public void onClick(View arg0)String name=editName.getText().toString();int age=Integer.parseInt(editAge.getText().toString();float weight=Float.parseFloat(editWeight.getText().toString();boolean isBoy=true;if(!radioBoy.isChecked()isBoy=false;SharedPreferences prefer

    15、ence=getSharedPreferences(fileName,MODE);SharedPreferences.Editor editor=preference.edit();editor.putString(name,name);editor.putInt(age,age);editor.putBoolean(isBoy,isBoy);editor.putFloat(weight,weight);mit();个人信息注册的设计与实现 读取信息按钮功能实现代码class btnReadListener implements OnClickListener Override public

    16、void onClick(View v)String msg=;SharedPreferences preference=getSharedPreferences(fileName,MODE);msg+=姓名:+preference.getString(name,张三)+,;msg+=年龄+preference.getInt(age,22)+,;if(preference.getBoolean(isBoy,true)msg+=性别:男;else msg+=性别:女;msg+=,+体重:+preference.getFloat(weight,42);tvMessage.setText(msg);

    17、目录电话号码文件存储的设计与实现电话号码文件存储的设计与实现个人信息注册的设计与实现个人信息注册的设计与实现SD卡文件访问的设计与实现卡文件访问的设计与实现概述概述简单记事本的设计与实现简单记事本的设计与实现成绩共享示例的设计与实现成绩共享示例的设计与实现访问通讯录的设计与实现访问通讯录的设计与实现本章小结本章小结项目实训项目实训电话号码文件存储的设计与实现 预备知识 Android中不仅支持Java中的IO类和方法,还提供了两个方法:openFileOutput()和openFileInput(),用于简化文件的读写操作。openFileOutput()方法用于打开文件,为写入数据而作准备。

    18、如果文件不存在则会自动创建一个新文件,其格式如下:public FileOutputStream openFileOutput(String fileName,int mode)电话号码文件存储的设计与实现 该方法返回一个FileOutputStream对象,使用FileOutputStream对象就可以向文件中写入二进制数据。它的第一个参数filenName,指的是文件的名称,注意,这里文件的名称不能带有路径,只能包含文件名和扩展名,如“SimpleFile.txt”,如果文件创建成功,系统会将其保存在/data/data/files目录中,因此不需要指定文件的路径。方法的第二个参数mode

    19、,是文件的访问模式,Android支持4种访问模式,见表7-2。电话号码文件存储的设计与实现表表7-1 4种文件访问模式种文件访问模式模式名说 明MODE_PRIVATE私有模式,只有文件的创建程序能访问文件MODE_APPEND追加模式,将内容追加到文件的末尾MODE_WORLD_READABLE全局读,允许其他程序读文件MODE_WORLD_WRITEABLE全局写,允许其他程序写文件电话号码文件存储的设计与实现 openFileInput()方法用于打开文件,读取文件的内容。如果文件不存在会抛出一个FileNotFoundException异常。其格式如下:public FileInpu

    20、tStream openFileInput(String fileName)该方法返回一个FileInputStream对象,使用FileInputStream对象就可以从文件中读取二进制数据。它的参数是文件名称,同样不需要包含文件的路径。电话号码文件存储的设计与实现 电话号码文件存储的实现 下面用一个示例演示文件的读写操作。首先建立如图7.3所示的界面,界面中包含两个EditText组件分别用于输入姓名和电话;两个Button组件:“写数据”按钮用于保存姓名和电话到“SimpleFile.txt”文件中,“读数据”按钮用于从“SimpleFile.txt”文件中读出数据并显示在TextVie

    21、w组件上。图图7.3 文件访问示例文件访问示例电话号码文件存储的设计与实现 在该案例中,由于要向文件中写入不同的姓名和电话,因此文件的访问模式设置为MODE_APPEND,示例的代码如下所示:class WriteListener implements OnClickListener Override public void onClick(View arg0)FileOutputStream fos=null;try fos=openFileOutput(fileName,Context.MODE_APPEND);String Name=editName.getText().toString

    22、();String Phone=editPhone.getText().toString();String msg=Name+t+Phone+n;/通过文件流将字符串转换为字节数组写入文件 fos.write(msg.getBytes();catch(IOException e)e.printStackTrace();电话号码文件存储的设计与实现 finally if(fos!=null)try fos.flush();/将输出缓冲区中的内容写入文件 fos.close();/关闭输出流 catch(IOException e)e.printStackTrace();电话号码文件存储的设计与实

    23、现“读数据”按钮的监听器代码如下:class ReadListener implements OnClickListener Override public void onClick(View v)FileInputStream fis=null;try fis=openFileInput(fileName);bytebyteMsg=new bytefis.available();/通过输入流将文件内容读入到数组byteMsg中 while(fis.read(byteMsg)!=-1)String msg=new String(byteMsg);/将字节数组转换为字符串 tvShow.setT

    24、ext(msg);catch(IOException e)e.printStackTrace();电话号码文件存储的设计与实现 finally if(fis!=null)try fis.close();catch(IOException e)e.printStackTrace();从上述代码可以看出:由于FileOutputStream对象写入的是字节流,因此需要将editName以及editPhone中获取的字符串通过getBytes()方法转为字节数组FileOutputStream对象写文件时,先写入到缓冲区,所以当写数据结束时,需要调用flush()方法将数据从缓冲区中写入文件;Fil

    25、eOutputStream对象和FileIutputStream对象都需要通过调用close()方法关闭。电话号码文件存储的设计与实现 程序运行后,通过FileExplorer可以查看到在/data/data/cn.edu.nnutc/files目录下,存在新建的文件SimpleFile.txt,包括文件的大小、创建时间以及权限等信息,如图7.4所示。图7.4 SimpleFile.txt文件目录SD卡文件访问的设计与实现卡文件访问的设计与实现个人信息注册的设计与实现个人信息注册的设计与实现电话号码文件存储的设计与实现电话号码文件存储的设计与实现简单记事本的设计与实现简单记事本的设计与实现概述

    26、概述成绩共享示例的设计与实现成绩共享示例的设计与实现访问通讯录的设计与实现访问通讯录的设计与实现本章小结本章小结项目实训项目实训SD卡文件访问的设计与实现 预备知识 如果在开发Android应用程序时需要使用SD卡,就需要在Android模拟器中进行设置,因为默认情况下Android模拟器是不支持SD卡的。最简单的方法就是在Eclipse中打开AVDManager,选中相应的模拟器,单击“编辑”按钮,弹出如图7.5所示的界面,然后在SD Card这一栏选择Size单选按钮,设置SD卡的大小,即可为模拟器创建SD卡。如果已经使用命令创建了SD卡映像文件,可以选择File单选按钮,将某个SD卡映像

    27、文件加载到模拟器中。SD卡文件访问的设计与实现图7.5 设置SD卡SD卡文件访问的设计与实现 如果想自己创建SD卡映像文件,可以使用/tools目录中的mksdcard命令创建SD卡映像文件。命令格式如下:mksdcard l NSDCARD 128M d:sdcard其中-l表示磁盘映像创建的卷标,NSDCARD表示SD卡映像文件的标识,128M是SD卡映像文件的大小,d:sdcard是SD卡映像文件创建后所在的目录。SD卡文件访问的设计与实现 当然开发访问SD卡的应用程序,只在模拟器中设置了SD卡还不行,还要在AndroidManifest.xml文件中添加允许访问SD卡的权限,否则应用程

    28、序不能访问SD卡,权限代码如下:SD卡文件访问的设计与实现 SD卡文件访问的实现 下面通过一个项目示例来演示读写SD卡的方法。首先建立如图7.6所示的界面,界面中包含一个EditText组件用于输入写入到SD卡中的信息,两个按钮分别为“写入SD卡”和“读SD卡”。“写入SD卡”按钮用于将信息写入到SD卡;“读SD卡”按钮用于将信息从SD卡读取出来,并显示到界面下方的TextView组件上。图图7.6 读写读写SD卡示例卡示例SD卡文件访问的设计与实现 获取SD卡的存储路径 通常获取SD卡的存储路径有以下两种方式。(1)通过Environment类中的getExternalStorageDire

    29、ctory().getpath()方法获取,Environment是一个提供访问环境变量的类,其常用的方法见表7-2。方 法说 明getDataDirectory()返回File,获取Android数据目录getDownloadCacheDirectory()返回File,获取Android下载/缓存内容目录。getExternalStorageDirectory()返回File,获取外部存储目录即SDCard getExternalStoragePublicDirectory(String type)返回File,取一个高端的公用的外部存储器目录来存储某些类型的文件getExternalSt

    30、orageState()返回File,获取外部存储设备的当前状态表7-2 Environment类中常用的方法SD卡文件访问的设计与实现 Environment类中的getExternalStorageState()方法返回不同的常量,这些常量分别表示外部存储设备当前不同的状态,其常用的一些常量值的含义见表7-3。常 量说 明MEDIA_BAD_REMOVAL表明SDCard被卸载前已被移除MEDIA_MOUNTED_READ_ONLY表明对象权限为只读MEDIA_NOFS表明对象为空白或正在使用不受支持的文件系统MEDIA_REMOVED表明不存在SDCardMEDIA_SHARED如果SD

    31、Card未安装,则通过USB大容量存储共享MEDIA_UNMOUNTABLESDCard存在但不可以被安装MEDIA_UNMOUNTEDSDCard存在但是没有被安装表7-3 getExternalStorageState方法返回的常量值SD卡文件访问的设计与实现(2)除了通过Environment.getExternalStorageDirectory().getPath()获取SD卡存储的路径,也可以先根据“/sdcard/”创建一个File对象,然后通过该对象的getAbsolutePath()方法获取SD卡的存储路径,代码如下所示:File dir=new File(/sdcard/)

    32、;String SDPath=dir.getAbsolutePath();SD卡文件访问的设计与实现 设置“写入SD卡”按钮的监听器首先使用File对象的createNewFile()方法创建一个文件,然后通过FileOutputStream对象的write()方法将信息写入到文件中,需要注意的是,创建FileOutputStream对象,以及关闭FileOutputStream对象都可能发生异常,所以需要使用trycatch模块捕获异常。class writeListener implements OnClickListener Override public void onClick(Vi

    33、ew arg0)File newFile=new File(SDPath+/+fileName);if(!newFile.exists()try newFile.createNewFile();/创建一个新文件 catch(IOException e)e.printStackTrace();SD卡文件访问的设计与实现FileOutputStream fos=null;try fos=new FileOutputStream(newFile);String msg=editMsg.getText().toString();fos.write(msg.getBytes();catch(IOExce

    34、ption e)e.printStackTrace();finally if(fos!=null)try fos.close();catch(IOException e)e.printStackTrace();SD卡文件访问的设计与实现 设置“读SD卡”按钮的监听器读取SD卡中文件时,也需要根据文件名(包含路径)创建File对象,以File对象为参数创建FileInputStream对象,然后使用FileInputStream对象的read()方法读取文件中的内容。需要注意的是,读取的原始内容是字节流,必须将其转换为字符型,再通过StringBuffer对象的append()方法将字符组成字符

    35、串。SD卡文件访问的设计与实现class readListener implements OnClickListener Override public void onClick(View v)StringBuffer sb=new StringBuffer();File file=new File(SDPath+/+fileName);try FileInputStream fis=new FileInputStream(file);int c;while(c=fis.read()!=-1)sb.append(char)c);fis.close();catch(FileNotFoundExc

    36、eption e)e.printStackTrace();catch(IOException e)e.printStackTrace();tvShow.setText(sb);SD卡文件访问的设计与实现 文件写入到SD卡中后,可以通过File Explorer查看写入的文件,文件的路径为“/mnt/sdcard/”,本案例中的文件名为SimpleFile.txt,如图7.7所示。图7.7 SD卡文件的目录目录简单记事本的设计与实现简单记事本的设计与实现个人信息注册的设计与实现个人信息注册的设计与实现电话号码文件存储的设计与实现电话号码文件存储的设计与实现SD卡文件访问的设计与实现卡文件访问的设

    37、计与实现成绩共享示例的设计与实现成绩共享示例的设计与实现概述概述访问通讯录的设计与实现访问通讯录的设计与实现本章小结本章小结项目实训项目实训简单记事本的设计与实现 预备知识 手动创建数据库 Android系统提供了一个工具sqlite3,用于手动创建数据库,它在/tools目录中,为了能在CMD中使用sqlite3命令,可以将/tools目录添加到Windows系统的环境变量Path中,设置方法与配置Java开发环境一样,限于篇幅,本书不再详述。在CMD中输入sqlite3命令,会得到如下内容:简单记事本的设计与实现 其中sqlite表示进入与SQLite数据库交互的界面,此时可以在数据库中创

    38、建表和查询信息等。如果要退出与SQLite数据库交互的界面,可以输入.exit。SQLite version 3.7.4Enter.help for instructionsEnter SQL statements terminated with a;sqlite简单记事本的设计与实现 Android中每个应用程序的数据库文件通常默认保存在/data/data/databases目录下,然而如果是手动建立数据库,在/data/data/目录中并不存在databases目录,而需要自己动手建立。简单记事本的设计与实现 首先在CMD中使用adb shell命令进入Linux命令行,然后使用Linu

    39、x系统的cd命令转到/data/data/目录下,最后使用mkdir命令创建databases目录,命令代码如下所示:#cd data#cd data#cd#mkdir databases简单记事本的设计与实现 sqlite3 school.db命令表示创建一个文件名为school.db的数据库文件。如果该数据库文件已经存在,则打开它,并且提示使用.help命令获得有关sqlite3的帮助,使用SQL语句时使用“;”表示结束。数据库文件创建完成后,就可以在数据库中创建表了,代码如下所示:create table student(id integer primary key autoincrem

    40、ent,name text not null,score float);简单记事本的设计与实现 有了数据库表后,就可以使用insert into命令向表中增加新的记录,代码如下所示:insert into student values(zhangsan,84);更新数据使用update命令,代码如下所示:update student set score=90 where id=1;删除数据使用delete命令,代码如下所示:delete from student where id=1;简单记事本的设计与实现查询数据使用select命令,代码如下所示:select*from student;sq

    41、lite3工具支持大量的命令,可以使用.help命令查询相关命令,也可参见表7-4,其中列举了一些常用的命令。编 号命 令说 明1.bail ON|OFF遇到错误时停止,默认为OFF2.databases显示数据库名称和文件位置3.dump?TABLE?将数据库以SQL文本形式导出4.echo ON|OFF开启和关闭回显表7-4 sqilte3命令列表简单记事本的设计与实现编 号命 令说 明5.exit退出6.help显示帮助信息7.table显示数据库中所有的表8.schema查看建立表时的SQL命令9.mode 更改输出格式,后面可加column、csv等10.read FILENAME在

    42、文件中执行SQL语句续表简单记事本的设计与实现 代码创建数据库 在使用代码创建数据库时,需要用到一个非常重要的帮助类SQLiteOpenHelper,这个帮助类可以辅助建立、更新和打开数据库。但是SQLiteOpenHelper类是一个抽象类,需要使用一个子类来继承该类,并实现该类中的抽象方法,代码如下所示:public class DatabaseHelper extends SQLiteOpenHelper public DatabaseHelper(Context context,String name,CursorFactory factory,int version)super(co

    43、ntext,name,factory,version);Override public void onCreate(SQLiteDatabase db)Override public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)简单记事本的设计与实现 简单记事本的实现 下面使用一个简单的记事本示例,介绍如何使用代码创建数据库,以及对数据库进行增、删、改的操作。如图7.8所示图7.8 记事本主界面图7.8 记事本主界面图7.8 记事本主界面图7.8 记事本主界面简单记事本的设计与实现 数据库辅助类的功能代码 在记事

    44、本程序中需要将用户的每篇日记的标题、内容以及时间等信息记录下来,这就需要使用数据库。为此,需要使用SQLiteOpenHelper类。public class DatabaseHelper extends SQLiteOpenHelper public DatabaseHelper(Context context,String name,CursorFactory factory,int version)super(context,name,factory,version);Override public void onCreate(SQLiteDatabase arg0)String sql

    45、=create table thing(id integer primary key autoincrement,title text not null,content text);arg0.execSQL(sql);简单记事本的设计与实现 记事本主界面的功能实现 主界面ListActivity中的布局代码比较简单,只有一个ListView组件,其中MENU_New和MENU_Exit定义两个菜单项的ID,且定义了一个ArrayList用于保存日记的标题的id。final static int MENU_New=Menu.FIRST;final static int MENU_Exit=Men

    46、u.FIRST+1;ArrayList IdArray=new ArrayList();简单记事本的设计与实现 应用程序运行时,要将日记的标题显示在主界面上,需要将数据库中的日记信息读出,即将日记的id存入IdArray中,将日记的title显示到lvTitle中,本示例定义了一个InitData()方法,代码如下:public void InitData()DatabaseHelper helper=new DatabaseHelper(ListActivity.this,node.db,null,1);SQLiteDatabase db=helper.getReadableDatabase

    47、();Cursor cs=db.query(thing,new Stringid,title,null,null,null,null,null);ArrayList al=new ArrayList();while(cs.moveToNext()int id=cs.getInt(cs.getColumnIndex(id);String title=cs.getString(cs.getColumnIndex(title);IdArray.add(id);al.add(title);ArrayAdapter adapter=new ArrayAdapter(this,android.R.layo

    48、ut.simple_list_item_1,al);lvTitle.setAdapter(adapter);简单记事本的设计与实现 db.query(table,columns,selection,selectionArgs,groupBy,having,orderBy)方法用于从数据库中查询数据,该方法有7个参数,table表示查询的表名;columns表示查询的输出项,是一个字符串数组;selection表示查询的条件;selectionArgs表示查询条件的参数,由于可能不止一个参数,所以selectionArgs是一个字符串数组;groupBy表示分组字段;having表示设置的满足条

    49、件;orderBy表示排序的字段。该方法返回的是一个Cursor类的对象,该类是数据记录的指针类。该类中的方法见表7-5。简单记事本的设计与实现方 法说 明moveToFirst将指针移动到第一条数据上moveToNext将指针移动到下一条数据上moveToPrevious将指针移动到上一条数据上getCount获取集合的数据数量getColumnIndexOrThrow返回指定属性名称的序号,如果属性不存在则产生异常getColumnName返回指定序号的属性名称getColumnNames返回属性名称的字符串数组getColumnIndex根据属性名称返回序号moveToPosition将

    50、指针移动到指定的数据上getPosition返回当前指针的位置表7-5 Cursor类的方法和说明简单记事本的设计与实现 在记事本主界面上单击某个日记标题时,就转到UpdateActivity界面中,该界面用于显示日记的内容并且可以对日记的内容进行修改。ListView的单击事件监听器代码如下:class itemListener implements OnItemClickListener Override public void onItemClick(AdapterView arg0,View arg1,int arg2,long arg3)Intent intent=new Inten

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Android开发工程师第七章-数据存储与访问课件.ppt
    链接地址:https://www.163wenku.com/p-5193251.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库