网络资源模板--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(); // 结束活动
    }

四、完整的项目源码

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

相关推荐
9624563 小时前
从“一键创建 ECS”到完整恢复状态机:ACK 抢占式节点恢复 Android 工具升级复盘
android
LCD液晶屏6 小时前
京瓷液晶屏停产替代:杭州立煌科技工业 LCD 解决方案
android·科技
2501_932750268 小时前
Android 自定义 View 入门
android
事圆则缓10 小时前
Android 开启线程的几种方式:Thread、线程池、HandlerThread 与协程
android
MZ_ZXD00111 小时前
【关注可白嫖源码】--课程设计--毕业设计-- 29210 Vue.js 3+Springboot中药材基本信息与图片查询系统
javascript·spring boot·课程设计·毕设·大作业·程序开发·毕设代做
半摆烂日常1 天前
低代码平台API对接实践:接口鉴权与数据同步的完整实现
android·低代码·rxjava
事圆则缓1 天前
volatile 使用场景全解析:它能保证什么,又解决不了什么
android
蒲公英内测分发1 天前
智能投影仪参加海外展会,未上架的 Android 配套 App 怎么让客户限时试用?
android
ii_best1 天前
按键精灵手机端开发安卓版实战:手写一个可最小化、可拖动的「运行日志悬浮窗」(附完整 源码 + 踩坑记录)
android·ios·智能手机·自动化·ai编程·按键精灵
终端安全笔记1 天前
安卓做 MDM 管控,先分清三种注册入口
android·安全·智能手机