网络资源模板--Android Studio 实现简易记事本App

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码


一、项目演示

网络资源模板--基于Android studio 实现的简易记事本App

二、项目测试环境

三、项目详情

首页

  1. 创建一个空的笔记本列表 mNotebookList。
  2. 使用该列表和指定的布局资源 item_notebook 创建适配器 mAdapter。
  3. 设置 RecyclerView 的布局管理器为线性布局。
  4. 将适配器设置到 RecyclerView 上。
  5. 设置空视图,当列表没有数据时显示 view_no_data 视图。
java 复制代码
 mNotebookList = new ArrayList<>(); // 初始化笔记本列表
        mAdapter = new NotebookAdapter(R.layout.item_notebook, mNotebookList); // 创建适配器

        recyclerView.setLayoutManager(new LinearLayoutManager(this)); // 设置布局管理器
        recyclerView.setAdapter(mAdapter); // 设置适配器
        mAdapter.setEmptyView(R.layout.view_no_data); // 设置空视图

添加页面

  1. 根布局:

    • 使用 RelativeLayout 作为根布局,宽高设置为填充父布局。
  2. 标题栏:

    • 包含一个 RelativeLayout,高度为 50dp,背景色为主题色。
    • 里面有三个子视图:
      • 一个返回按钮 ImageView,显示一个后退图标。
      • 一个标题 TextView,显示应用名称,居中显示。
      • 一个删除按钮 ImageView,位于右侧,显示一个删除图标。
  3. 输入框:

    • 一个 EditText 用于输入笔记内容,设置了提示文本"请输入内容...",并在标题栏下方、保存按钮上方显示。
  4. 保存按钮:

    • 一个 Button,宽度填充父布局,位于底部,背景为自定义 drawable,文本为"保存"。
XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@id/container"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@id/layout_title"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="@color/color_theme"
        android:orientation="horizontal"
        android:paddingHorizontal="@dimen/dp_10"
        android:paddingLeft="@dimen/dp_10"
        android:paddingRight="@dimen/dp_10">

        <ImageView
            android:id="@+id/image_back"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_centerVertical="true"
            android:src="@drawable/ic_back" />

        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:text="@string/app_name"
            android:textColor="@color/White"
            android:textSize="15sp" />

        <ImageView
            android:id="@+id/image_delete"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:src="@drawable/ic_delete" />
    </RelativeLayout>

    <EditText
        android:id="@+id/edit_notebook"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@id/btn_save"
        android:layout_below="@id/layout_title"
        android:layout_margin="@dimen/dp_10"
        android:background="@color/White"
        android:gravity="top"
        android:hint="请输入内容..."
        android:padding="@dimen/dp_10"
        android:textSize="15sp" />

    <Button
        android:id="@+id/btn_save"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/dp_40"
        android:layout_alignParentBottom="true"
        android:layout_margin="@dimen/dp_10"
        android:background="@drawable/bg_login"
        android:text="保存"
        android:textColor="@color/White"
        android:textSize="15sp" />
</RelativeLayout>

修改页面

  1. 内容检查:

    • 使用 TextUtils.isEmpty() 方法检查输入内容是否为空。如果为空,显示一个短暂的提示 (Toast),并返回,不执行后续保存逻辑。
  2. 更新已存在的笔记本:

    • 如果 mNotebookBean 不为空,说明是对已有笔记本进行编辑。更新其内容和编辑时间,然后调用 mDBManager.updateNotebook(mNotebookBean) 方法更新数据库中的记录。
  3. 新建笔记本:

    • 如果 mNotebookBean 为空,创建一个新的 NotebookBean 对象,设置内容和编辑时间,然后调用 mDBManager.insertNotebook(newNotebook) 方法将新记录插入数据库。
  4. 结束活动:

    • 最后,设置结果为 RESULT_OK,并调用 finish() 方法结束当前活动,返回到之前的界面。
java 复制代码
   private void save(String content) {
        if (TextUtils.isEmpty(content)) {
            Toast.makeText(this, "您还未输入内容", Toast.LENGTH_SHORT).show(); // 提示用户输入内容
            return;
        }

        if (mNotebookBean != null) {
            // 更新已存在的笔记本内容
            mNotebookBean.setContent(content);
            mNotebookBean.setEditTime(System.currentTimeMillis()); // 更新编辑时间
            mDBManager.updateNotebook(mNotebookBean); // 更新数据库
        } else {
            // 新建笔记本
            NotebookBean newNotebook = new NotebookBean();
            newNotebook.setContent(content);
            newNotebook.setEditTime(System.currentTimeMillis()); // 设置编辑时间
            mDBManager.insertNotebook(newNotebook); // 插入数据库
        }

        setResult(RESULT_OK); // 设置结果为成功
        finish(); // 结束活动
    }

四、完整的项目源码

👇👇👇👇👇快捷获取方式👇👇👇👇👇

相关推荐
五彩小白10 小时前
自回归和上下文
android
事圆则缓13 小时前
Android 多渠道打包实战:Product Flavors、签名、AAB 与发包校验
android
树下困觉眯15 小时前
View绘制流程学习--获取WindowManager的三种方式
android·系统架构·view design
vilya16 小时前
我怎么给手机 GUI Agent 做双通道感知:无障碍树为主,投屏像素兜底
android·人工智能
李子红了时17 小时前
阿狸舞台APP(安卓端手机EncFS解密+压缩包解压+视频播放)
android·音视频
事圆则缓17 小时前
Android 使用 Jenkins 实现 CI/CD,并用 SonarQube 建立质量门禁
android·ci/cd·jenkins
其实防守也摸鱼17 小时前
DeepSeek Harness 开源贡献手记:从 Issue 到 Merge 的完整旅程
android·数据库·学习·ai·oracle·自动化
恋猫de小郭17 小时前
Android CLI 支持 AI Agent 通过 Device Streaming 调试云真机
android·前端·flutter
素师良码1 天前
第5篇:显示驱动必备调试工具浅析
android
维克兜率天2 天前
【维克】配对交易的季节性:哪些品种适合长拿?
android·开发语言·笔记·python·算法·kotlin·量化