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

四、完整的项目源码

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

相关推荐
rocpp4 小时前
Android 相册选择与拍照接入实践:MediaStore 分页、权限适配与 FileProvider
android
Flynt5 小时前
升级Flutter 3.44,我踩了HCPP和AGP 9的坑
android·flutter·dart
白色牙膏6 小时前
Cocos Creator 2.4.x 接入 AdMob 插件的迁移实践
android
我命由我123457 小时前
C++ - 面向对象 - 常成员函数
android·java·linux·c语言·开发语言·c++·算法
tryqaaa_8 小时前
学习日志(四)【php反序列化魔术方法以及pop构造配实战】
android
Java小学生丶9 小时前
记录一下我的 Gradle 开发环境配置过程
android·java·gradle·maven·安卓
问心无愧051310 小时前
ctf show web 入门256
android·前端·笔记
霸道流氓气质10 小时前
MySQL 索引设计实战指南
android·数据库·mysql
R语言爱好者11 小时前
叠氮酸介绍
android
方白羽11 小时前
Android WebView 中实现第三方 QQ 登录的架构与流程详解
android·app