当前位置: 首页 > news >正文

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

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码 


一、项目演示

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

二、项目测试环境

三、项目详情

首页

  1. 创建一个空的笔记本列表 mNotebookList
  2. 使用该列表和指定的布局资源 item_notebook 创建适配器 mAdapter
  3. 设置 RecyclerView 的布局管理器为线性布局。
  4. 将适配器设置到 RecyclerView 上。
  5. 设置空视图,当列表没有数据时显示 view_no_data 视图。
 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 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"><RelativeLayoutandroid: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"><ImageViewandroid:id="@+id/image_back"android:layout_width="20dp"android:layout_height="20dp"android:layout_centerVertical="true"android:src="@drawable/ic_back" /><TextViewandroid: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" /><ImageViewandroid: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><EditTextandroid: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" /><Buttonandroid: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() 方法结束当前活动,返回到之前的界面。
   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(); // 结束活动}

四、完整的项目源码 

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

http://www.lryc.cn/news/459866.html

相关文章:

  • 根据Vue对比来深入学习React 下 props 组件传值 插槽 样式操作 hooks 高阶组件 性能优化
  • HTML(六)超链接
  • 【Coroutines】Implement Lua Coroutine by Kotlin - 2
  • java计算机毕设课设—扫雷游戏(附源码、文章、相关截图、部署视频)
  • AndroidLogger 使用问题
  • 数据库常见面试
  • boxplot 绘制箱线图,添加数据点
  • 用sdkman管理多个jdk切换
  • 【AIGC】ChatGPT提示词Prompt高效编写模式:结构化Prompt、提示词生成器与单样本/少样本提示
  • 反调式实战(有道翻译窗口弹出)
  • verilog端口使用注意事项
  • Docker常用命令大全汇总
  • LVS-DR+Keepalived 高可用群集部署
  • 【elasticsearch】安装和启动
  • Golang 逃逸分析(Escape Analysis)理解与实践篇
  • React入门 9:React Router
  • MATLAB基础应用精讲-【数模应用】Bland-Altman图(附python和R语言代码实现)
  • ARM/Linux嵌入式面经(四一):中兴面经
  • 鸿蒙虚拟运行环境
  • SpringCloud-Consul
  • nginx搭建负载均衡
  • 灵当CRM data/pdf.php 任意文件读取漏洞复现
  • Python 批量转换 Shapefile 为 GeoJSON
  • 软考《信息系统运行管理员》- 4.1信息系统软件运维概述
  • Leetcode 3319. K-th Largest Perfect Subtree Size in Binary Tree
  • 从秒级到小时级:TikTok等发布首篇面向长视频理解的多模态大语言模型全面综述
  • 【CTF】敏感信息泄露 GIT SVN VIM
  • EMQX服务器的搭建,实现本地机和虚拟机之间的MQTT通信(详细教程)
  • cordova的使用
  • 三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力