在这个教程中将会建立一个简单列表界面,允许用户添加删除,但是不能编辑。包括如下的内容:

◆ListActivities的基础知识和如何建立菜单项。

◆如何使用SQLite 数据库访问数据。

◆如何使用ArrayAdapter绑定数据到ListView (最简单的一种方式)。

◆最基本的Layout,包括如何显示一个ListView,如何向一个菜单插入菜单项以及如何响应菜单

第一步 建立工程

使用Eclipse建立一个工程Notepad

第二步 如何使用Sqlite数据库

和系统相关的接口调用都要用到Context类。

1打开数据库

代码片段:

public DBHelper(Context ctx) {

try {

//打开已经存在的数据库

db = ctx.openDatabase(DATABASE_NAME, null);

} catch (FileNotFoundException e) {

try {

//建立新的数据库

db =

ctx.createDatabase(DATABASE_NAME, DATABASE_VERSION, 0, null);

//建立数据表

db.execSQL(DATABASE_CREATE);

} catch (FileNotFoundException e1) {

db = null;

}

}

}

Context类的openDatabase可以打开一个已经存在的数据库,如果数据库不存在,将会抛出FileNotFoundException异常。可以通过Context类的createDatabase函数建立一个新的数据库。通过调用SQLiteDatabase 的execSQL方法,执行一条SQL语句建立一个新的数据表。

2.获取表中的数据

代码如下:

public List﹤Row﹥ fetchAllRows() {

ArrayList﹤Row﹥ ret = new ArrayList﹤Row﹥();

try {

Cursor c =

db.query(DATABASE_TABLE, new String[] {

"rowid", "title", "body"}, null, null, null, null, null);

int numRows = c.count();

c.first();

for (int i = 0; i ﹤ numRows; ++i) {

Row row = new Row();

row.rowId = c.getLong(0);

row.title = c.getString(1);

row.body = c.getString(2);

ret.add(row);

c.next();

}

} catch (SQLException e) {

Log.e("booga", e.toString());

}

return ret;

}

建立一个游标类Cursor 通过SQLiteDatabase 的query方法查询一个表格。有了Cursor就可以遍历所有的记录了。

3添加新的记录

public void createRow(String title, String body) {

ContentValues initialValues = new ContentValues();

initialValues.put("title", title);

initialValues.put("body", body);

db.insert(DATABASE_TABLE, null, initialValues);

}

构造一个ContentValues类,通过调用put方法,可以设置一条记录的属性。通过调用SQLiteDatabase的insert方法添加一条新的记录。

4 删除记录

public void deleteRow(String str)

{

db.delete(DATABASE_TABLE, "title=\'" + str+"\'", null);

}

直接调用SQLiteDatabase的delete方法,第二个参数是一个SQL条件表达式。

第三步 显示方式和界面

大部分的界面都有一个Layout。我们的界面是显示在整个屏幕中的List。还有其他的显示方式,比如悬浮的窗口(Dialog,Alert)。

打开main.xml文件。

这是一个定义界面显示风格的资源文件。

a. 所有的界面资源文件都从这样的一行开始: ﹤?xml version="1.0" encoding="utf-8"?﹥.

b. 一般的类型定义都是LinearLayout (并不是总是)

c. 关于XML的名称空间的定义,总是下面一行:

xmlns:android="http://schemas.android.com/apk/res/android"

第四步 编辑notepad_list.xml文件

最终如下所示:

﹤?xml version="1.0" encoding="utf-8"?﹥

﹤LinearLayout xmlns:android=http://schemas.android.com/apk/res/android android:layout_width=" fill_parent "

android:layout_height=" fill_parent "﹥

﹤ListView id="@id/android:list"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/﹥

﹤TextView id="@id/android:empty"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/no_notes"/﹥

﹤/LinearLayout﹥

a. ListView和TextView只能显示一个,正常情况下,ListView会被显示出来,当没有任何一个数据的时候将会显示一个TextView ,显示出 "还没有建立任何数据!" ,字符串资源将被定义在资源文件中。

b. 在 ListView 和 TextView中的带@符号的字符串表示,XML解析器将会分析出后面的数据是一个资源ID。

c. 通过更改资源文件,在R.java文件中的代码会反应出来。在代码中使用的资源都要通过R.java中的常量进行索引

第五步 定义一个显示列表项风格的配置文件

在res/layout目录现建立一个新的文件notes_row.xml.

添加如下的代码:

﹤?xml version="1.0" encoding="utf-8"?﹥

﹤TextView id="@+id/text1"

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/﹥

第六步

把Notepad 的父类从 Activity 改为 ListActivity:

public class Notepad extends ListActivity

注意: 必须导入ListActivity,在 Eclipse下可以使用, ctrl-shift-O

第七步

有三个方法: onCreate, onCreateOptionsMenu 和 onOptionsItemSelected, 需要我们填充:

onCreate()当一个界面开始显示的时候会被调用,相当于一个界面的主函数。在这里可以初始化资源和状态。

onCreateOptionsMenu() 被用来建立一个界面的菜单。当用户点击菜单键的时候将会显示出来。

onOptionsItemSelected()当用选择菜单的时候将会被调用。

第八步

填充onCreate() 方法。

在这里可以设置界面标题,初始化DBHelper对象管理数据。填充List列表。

a. 调用super()传入参数icicle

b. setContentView to R.layout.notepad_list

c. 定义另外一个类dbHelper

d. 初始化DBHelper类。

e. 最后调用方法-fillData()-

f. onCreate()方法如下所示:

@Override

public void onCreate(Bundle icicle)

{

super.onCreate(icicle);

setContentView(R.layout.notepad_list);

dbHelper = new DBHelper(this);

fillData();

}

添加私有的属性DBHelper

private DBHelper dbHelper;

第九步填充onCreateOptionsMenu() 方法.

在strings.xml文件中定义字符串资源。 a. 在strings.xml 文件中添加一个字符串资源

﹤string name="menu_insert"﹥添加﹤/string﹥,

﹤string name="menu_delete"﹥删除﹤/string﹥,

这些在String.xml文件中定义的资源,保存文件后,在R.java中会出先相应的资源ID。

定义一个菜单ID 在NotePad.java 中。

public static final int INSERT_ID = Menu.FIRST;

public static final int DELETE_ID = Menu.FIRST +1;

b. 在onCreateOptionsMenu() 中添加菜单项,返回父类法方法onCreateOptionsMenu的返回值.。代码如下所示:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

boolean result = super.onCreateOptionsMenu(menu);

menu.add(0, INSERT_ID, R.string.menu_insert);

menu.add(0, DELETE_ID, R.string.menu_delete);

return result;

}Menu.Add(num1,menuid,string)

其中num1是一个可以为菜单项排序的基数,所有一样基数的菜单项按照加入的顺序排序,基数相同的菜单项排列在一起,基数按照从小到大的顺序从上到下排列菜单项。Menuid是唯一一个菜单项的标识。当菜单项被用户选择的时候,这个标识就会在onOptionsItemSelected()方法的参数中出现。

第十步

填充onOptionsItemSelected() 方法:

当用户选择菜单以后,onOptionsItemSelected()方法将会被调用。通过调用item.getId()方法可以得到选择的菜单的ID进而区别不同的菜单。 The super.onOptionsItemSelected(item) 返回父类的onOptionsItemSelected()方法;

@Override

public boolean onOptionsItemSelected(Item item) {

switch (item.getId()) {

case INSERT_ID:

createNote();

break;

}

return super.onOptionsItemSelected(item);

}

【编辑推荐】

【责任编辑:杨赛 TEL:(010)68476606】

点赞 0

android+notepad教程,Android平台应用开发实例:Notepad相关推荐

  1. android系统应用的平台化开发

    android系统应用的平台化开发,一种开发思路,旨在方便平台开发. 在android操作系统中,源码编译生成app,加入带系统签名的app,这些应用都带有系统权限,统一放在了system/app或者 ...

  2. Android 相机教程,Android 相机教程

    Android相机教程 相机主要用于捕获图片和视频.我们可以通过使用相机API的方法来控制相机. Android通过以下两种方式提供了在相机上工作的功能: 通过相机意图 通过相机API 了解相机意图和 ...

  3. Android精通教程-Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease ...

  4. android+客户端+教程,Android新浪客户端开发教程完整版.pdf

    Android新浪客户端开发教程完整版 Android 新浪客户端开发教程新浪客户端开发教程 (完整版(完整版)) 新浪客户端开发教程新浪客户端开发教程 ((完整版完整版)) android开发我的新 ...

  5. sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用

    在开发Android应用程序时经常需要存储数据,Android系统提供了SQLite数据库,还提供了SQLiteOpenHelper类,使我们可以很方便的操作数据库.通过一个例子来说明在Android ...

  6. android混淆教程,Android 实现代码混淆的实例

    Android 实现代码混淆的实例 1.简介 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为. 混淆的目的是为了加大反 ...

  7. android fragment 教程,Android app开发中的Fragment入门学习教程

    在Android3.0上开始引入了一个新概念叫Fragment.它有自己的布局文件,可以作为组件排布,也可以相互组合去实现不同的布局显示.使用Fragment可以重复利用代码,并且可以满足不同设备尺寸 ...

  8. python测试开发自学教程-自动化平台测试开发:Python测试开发实战_PDF电子书

    因资源下载地址容易失效,请加微信号359049049直接领取,直接发最新下载地址. 前言 ======================================================= ...

  9. python测试开发自学教程-自动化平台测试开发- Python 测试开发实战

    适读人群 :本书适合从事自动化测试开发技术的广大开发和测试人员使用,也可供产品测试开发管理人员参考. 自动化测试平台测试开发是指开发一个平台系统,结合相关的开源自动化框架进行集成,如 Selenium ...

最新文章

  1. R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字、并为类型数据添加图像符号标签
  2. 编程的一些快捷键(转帖)
  3. maven + spring mvc 创建Java web项目
  4. ir2104s的自举电容_电赛必备,IR2104S半桥驱动MOS管电机驱动板(PCB工程文件+磁悬浮代码)...
  5. 如何选择正确的容器编排以及如何进行部署
  6. hadoop ubantu环境搭建_ubuntu hadoop学习 环境搭建
  7. 理解vue中的父组件,子组件
  8. 星球大战 BZOJ 1015
  9. python打包成exe
  10. 编译OpenJDK12:可以用VS2010到VS2017
  11. 网络蜘蛛C#开源示例
  12. NBU备份Vmware
  13. 电脑电源问题,导致攒机电脑无法开机
  14. 美规Homekit插座
  15. PHP获取每个月的开始时间和结束时间
  16. python爬虫-抓取内涵吧内涵段子
  17. Java小游戏象棋开发1-界面设计
  18. java猜拳程序_Java基础之:猜拳小程序
  19. python特别是anaconda环境下安装库时报错需要Microsoft Visual C++ 14.0 or greater is required的终极解决方案
  20. MATLAB 中nargin函数

热门文章

  1. 最简单的基于JavaEE和FFmpeg的视频网站
  2. Oracle 增删改查
  3. “中国式招标”的一些趣闻
  4. 警惕黑客破坏网络安全
  5. 需求编写的几点经验之谈
  6. android 键盘搜索按钮不收起键盘,android EditText 实现搜索框点击搜索隐藏键盘
  7. c++ sendmessage 鼠标 坐标是相对自身吗_CAD大家都说会:这些知识不知道,你敢说会CAD吗?...
  8. 引导程序为什么要org 07c00h
  9. View工作原理(三)视图大小计算过程(measure过程)
  10. android TextView 带滚动条,和ScrollView 用法(暂时觉得ScrollView滑动速度比较快)