Android中利用SQLite数据库实现一个简单的记事本

一、应用介绍

应用总共有3个界面,支持增删改查操作。
①首先,打开应用将进入如下界面:
在这里插入图片描述
在这里可以新建日记。
②点击右上角竖着的“三个点”,弹出菜单,菜单选项分别是“查看日记”、“退出程序”。
在这里插入图片描述
③点击“查看日记”,则会进入如下的界面:
在这里插入图片描述该界面的列表是运用RecyclerView来制作的。在该界面点击时间部分可以删除对应的记录。
④点击标题“抓射手”,则会进入到如下的详情界面:
在这里插入图片描述
在这里可以查阅日记的详情、可以对日记的标题和内容进行更改。

二、应用用到的一些知识

  1. 顶部的Toolbar
    首先每个界面顶部都有一个工具栏,这个工具栏可不是默认的ActionBar。因为ActionBar存在一些缺陷,所以本应用没有采用ActionBar。
    想要隐藏掉默认的ActionBar,可以在res/values目录下的styles.xml文件中更换主题,即采用“NoActionBar”的主题。例如我的styles.xml文件具体的内容如下:
<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>
  1. SQLite数据库
    SQLite数据库是安卓内置的一款轻量级的关系型数据库,与MySQL数据库相比,它占的内存更低,数据类型更加简单,使用时也不需要输入用户名和密码。
    要想使用SQLite数据库,首先需要写一个类去继承SQLiteOpenHelper这个抽象类,然后重写它的onCreate()方法和onUpgrade()方法。
    例如,我自己写了一个名为“MySQLiteOpenHelper”的类,代码如下:
public class MySQLiteOpenHelper extends SQLiteOpenHelper
{
    private String sql="create table Notepad(id integer primary key autoincrement,title text,body text,time text)";
    private Context mContext;
	//构造器
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
    {
        super(context, name, factory, version);
        mContext=context;
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        db.execSQL(sql);
        Toast.makeText(mContext,"数据库创建成功!",Toast.LENGTH_SHORT).show();

    }

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

    }
}

然后,就可以创建MySQLiteOpenHelper的对象了,代码如下;

MySQLiteOpenHelper mydb = new MySQLiteOpenHelper(context, "mydb", null, 1);

第一个参数是Context,第二个参数是数据库对应的文件名,第三个参
数允许我们在查询数据的时候返回一个自定义的 Cursor,一般都是传入 null ,第四个参数是数据库的版本号。
紧接着,利用MySQLiteOpenHelper对象的getReadableDatabase()方法去获取一个SQLiteDatabase对象,代码如下:

SQLiteDatabase sqLiteDatabase = mydb.getReadableDatabase();

SQLiteDatabase对象就是用来对数据库进行增删改查操作的。

  1. 随时随地退出程序
    需要写一个类ActivityCollector去管理活动,代码如下:
public class ActivityCollector
{
    public static List<Activity> activities = new ArrayList<>();
    public static void addActivity(Activity activity)
    {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity)
    {
        activities.remove(activity);
    }
    public static void finishAll()
    {
        for (Activity activity : activities)
        {
            if (!activity.isFinishing())
            {
                activity.finish();
            }
        }
        activities.clear();
    }
}

再写一个名为BaseActivity的类,代码如下:

public class BaseActivity extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        Log.d("BaseActivity", getClass().getSimpleName());
        ActivityCollector.addActivity(this);
    }
    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
}

然后让整个应用的活动去继承BaseActivity这个类,而不是去继承默认的AppCompatActivity。
在需要退出程序的地方加上下面的两行代码就行了:

ActivityCollector.finishAll();
Process.killProcess(Process.myPid());//杀掉当前进程

本应用是在“退出程序”的点击事件里面写了上面的两行代码的。

三、数据库表的设计

数据库表的结构比较简单,只有一张Notepad表,这张表有四个字段(列),具体情况如下表:

列名 数据类型 说明
id integer 主键
title text 日记的标题
body text 日记的正文
time text 创建日记的时间

四、项目的地址

项目已经放到github上了:完整的项目github地址

发布了42 篇原创文章 · 获赞 10 · 访问量 2710

猜你喜欢

转载自blog.csdn.net/Deep_rooted/article/details/105077374