目录

  • 第1章 Android UI设计
    • ● 版本与程序
    • ● 学习目标和本章素材
    • ● 本章PPT
    • ● 本章讲解
    • ● 例1-1 线性布局应用示例
    • ● 例1-2 帧布局应用示例
    • ● 例1-3 表格布局应用示例
    • ● 例1-4 相对布局应用示例
    • ● 例1-5 网格布局应用示例
    • ● 例1-6 约束布局应用示例
    • ● 例1-7 文本标签组件示例
    • ● 例1-8 制作登陆界面
    • ● 例1-9 进度条ProgressBar应用示例
    • ● 例1-10 单选按钮与复选按钮
    • ● 例1-11 简单列表示例
    • ● 例1-12 ListActivity示例
    • ● 例1-13 带有图片的列表
    • ● 例1-14 没有数据的ListView
    • ● 例1-15 改进的列表
    • ● 实战演练——生肖背后的故事
  • 第2章 Activity与多个用户界面
    • ● 学习目标和本章素材
    • ● 本章PPT
    • ● 本章讲解
    • ● 例2-1 从Activity启动另一个Activity示例
    • ● 例2-2 传递数据到第二个Activity示例
    • ● 例2-3 消息提示Toast示例
    • ● 例2-4 消息对话框示例
    • ● 例2-5 选项菜单应用示例
    • ● 例2-6 上下文菜单应用示例
    • ● 实战演练——BMI体质指数计算器
  • 第3章 多媒体播放与录制
    • ● 学习目标和本章素材
    • ● 本章PPT
    • ● 本章讲解
    • ● 例3-1 音乐播放器, 播放项目资源中的音乐
    • ● 例3-2 音乐播放器, 播放SD卡中的音乐
    • ● 例3-3 应用MediaPlayer设计视频播放器
    • ● 例3-4 应用VidioView设计视频播放器
    • ● 例3-5 录音示例
    • ● 例3-6 拍照示例
    • ● 实战演练——音乐播放器
  • 第4章    广播与服务
    • ● 学习目标和本章素材
    • ● 本章PPT
    • ● 本章讲解
    • ● 例4-1 消息广播程序示例
    • ● 例4-2 系统通知服务示例
    • ● 例4-3 广播和时钟服务示例
    • ● 例4-4 调用系统功能拨打电话
    • ● 例4-5 后台音乐服务示例
    • ● 实战演练——播放后台音乐
  • 第5章    数据存储
    • ● 学习目标和本章素材
    • ● 本章PPT
    • ● 本章讲解
    • ● 例5-1 内部存储文件示例
    • ● 例5-2 SD文件示例
    • ● 例5-3 JSON数据示例
    • ● 例5-4 SharedPreferences示例
    • ● 例5-5 创建与删除数据库示例
    • ● 例5-6 数据库记录的操作示例
    • ● 实战演练——掌上日记本
  • 第6章    图像和动画
    • ● 学习目标和本章素材
    • ● 本章PPT
    • ● 本章讲解
    • ● 例6-1 绘制几何图形示例
    • ● 例6-2 补间动画示例
    • ● 例6-3 属性动画示例
    • ● 例6-4 ImageView图像浏览示例
    • ● 例6-5 ImageSwitcher展示相册示例
    • ● 例6-6 GridView展示相册示例
    • ● 例6-7 游戏中触屏事件示例
    • ● 实战演练——图片与动画
  • 第7章    网络编程
    • ● 学习目标和本章素材
    • ● 本章PPT
    • ● 本章讲解
    • ● 例7-1 应用WebView的对象浏览网页
    • ● 例7-2 从Web服务器读取图像文件
    • ● 例7-3 读取JSON数据
    • ● 例7-4 解析JSON数据
    • ● 实战演练——城市天气预报
  • 第8章    分享美食
    • ● 学习目标和本章素材
    • ● 本章PPT
    • ● 本章知识点讲解
    • ● 项目制作流程演示
    • ● 示范1 图标SVG
    • ● 示范2 卡片视图
    • ● 示范3 导航视图
  • 课程资源
    • ● 学生资源包
    • ● 网站地址
实战演练——掌上日记本

n编写一个掌上日记本应用程序,用SQLite数据库保存信息。界面效果如下图所示, 不要标题,自动加入日期,只需要正文和日期。

运行演示


strings.xml源代码如下:

<resources>

    <string name="app_name">MyDiary</string>

    <string name="menu_insert">添加一篇新日记</string>

    <string name="search">查找内容</string>

    <string name="time">时间</string>

    <string name="body">内容</string>

    <string name="confirm">保存</string>

    <string name="back">返回</string>

    <string name="delete">删除</string>

    <string name="edit_diary">编辑日记</string>

</resources>

操作数据库的文件MyDiaryDatabase.java源代码如下:

package com.example.mydiary;


import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;


public class MyDiaryDatabase {

    private DatabaseHelper mOpenHelper;

    static final String Database_name = "MyDiary.db";//数据库名称

    static final int Database_Version = 1;

    static final String TABLE_NAME = "diary";//数据表名称,日记

    static final String ID = "id";    //ID编号,数据表的主键

    static final String BODY = "body"; //正文

    static final String TIME= "time"; //时间


    private SQLiteDatabase db;

    private Context context;


    //数据库的版本管理类

    private static class DatabaseHelper extends SQLiteOpenHelper {

        private DatabaseHelper(Context context) {

            super(context, Database_name, null, Database_Version);

        }

        @Override

        public void onCreate(SQLiteDatabase db) {

        }

        @Override

        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        }

    }

    /*

     * 构造器,传递 Context

     */

    public MyDiaryDatabase(Context c) {

        context =c;

        mOpenHelper = new DatabaseHelper(context);

    }

    /*

     * 打开或创建数据库

     */

    public boolean openMydb() {

        int mode = Context.MODE_PRIVATE;

        try {

            db = context.openOrCreateDatabase(Database_name, mode, null);//创建数据库

            Log.i("SQLite","打开或创建数据库");

            return true;

        } catch (SQLException e) {

            return false;

        }

    }

    /*

     * 创建数据表

     */

    public boolean CreateMyTable() {

        //数据表如不存在就创建

        String DATABASE_CREATE =

                "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " ("

                        + ID + " INTEGER primary key autoincrement,"//ID自动编号

                        + BODY + " text not null,"

                        + TIME + " text not null);";

        try {

            db.execSQL(DATABASE_CREATE);//创建数据表

            Log.i("SQLite","创建数据表");

            return true;

        } catch (SQLException e) {

            return false;

        }

    }

    /*

     * 删除数据库

     */

    public void deleteMydb() {

        context.deleteDatabase(Database_name);

        Log.i("SQLite","删除数据库");

    }

    /*

     * 插入数据

     */

    public boolean insertdata(ContentValues values) {

        try {

            db.insert(TABLE_NAME,ID,values);

            Log.i("SQLite","插入数据记录");

            return true;

        } catch (SQLException e) {

            return false;

        }

    }

    /*

     * 删除符合条件的数据

     */

    public boolean deletedata(Integer id) {

        try {

            String args[] = {id.toString()};

            db.delete(TABLE_NAME, ID +"= ?", args);//  ? 代表一个参数,先占位

            Log.i("SQLite","删除符合条件的数据");

            return true;

        } catch (SQLException e) {

            return false;

        }

    }

    /*

     * 修改数据

     */

    public boolean update(ContentValues values,Integer id) {

        try {

            String args[] = {id.toString()};

            db.update(TABLE_NAME,values,ID + "= ?", args);

            Log.i("SQLite","修改数据");

            return true;

        } catch (SQLException e) {

            return false;

        }

    }

    /*

     * 获取符合ID 条件的记录,精确查询

     */

    public Cursor getdata(Integer id) {

        String args[] = {id.toString()};

        String col[] = {  BODY,TIME };

        //String col[] = {  BODY,TIME,TIME2 };

        Cursor cur = db.query(TABLE_NAME, col, ID + "= ?", args, null, null, null);

        Log.i("SQLite","获取符合条件的数据");

        return cur;

    }

    /*

     *   获取body 符合条件的记录,模糊查询

     */

    public Cursor sousuo(String s) {

        String sql="select * from "+TABLE_NAME+" where body like '%"+s+"%'";

        Cursor cur = db.rawQuery(sql,null);

        Log.i("SQLite","获取符合条件的数据");

        return cur;

    }

    /*

     * 获取数据表的全部记录

     */

    public Cursor getAllNotes() {

        String col[] = { ID, BODY,TIME };

        Log.i("SQLite","获取全部记录");

        return db.query(TABLE_NAME, col, null, null, null, null, null);

    }

}