安卓应用开发记事本app实训报告

本文将介绍一种基于Android平台开发的记事本应用程序。该应用程序提供了一种简单而实用的方法来写下用户的想法、记录用户在工作、学习、生活中遇到的问题等重要信息,使得这些信息可以随时方便地被用户查找、修改和删除。应用程序包括三个核心功能:新建、编辑和删除笔记。

1.应用程序架构概述

该应用程序共由四个组件构成:Activity、Adapter、Database和Model。其中Activity负责显示界面,Adapter负责管理界面元素的呈现和用户输入事件的响应,数据库用于存储笔记信息,Model则提供了一个抽象的笔记数据结构,并定义了数据库操作的接口。

2.应用程序核心流程

2.1启动应用程序

当用户点击应用程序的图标时,系统会启动MainActivity组件,并根据应用程序的数据模型来初始化笔记列表,进而呈现给用户。

2.2创建新笔记

当用户点击“新建”按钮时,系统会启动NoteEditActivity组件,用户可以在该界面中输入笔记标题和笔记内容,并保存新笔记。当用户完成编辑后,系统会将新笔记保存到数据库中,并返回到MainActivity界面。

2.3编辑笔记

当用户点击笔记列表中的标题时,系统会启动NoteEditActivity组件并传递笔记的标题和内容为参数,这样用户就可以编辑笔记的标题和内容。编辑完成后,系统会将笔记更新到数据库中,并返回到MainActivity界面。

2.4删除笔记

当用户长按笔记列表中的某一项时,系统会提示用户是否要删除该笔记,如果用户确定删除该笔记,则将该笔记从列表中删除,并从数据库中删除。

3.应用程序的实现

使用Java语言和Android API开发该应用程序,实现方法如下.

3.1创建Model类

Model类是笔记数据的抽象,并定义了数据库操作的接口,可以通过以下方法定义:

```java

public class Note {

public long id;

public String title;

public String content;

}

```

3.2创建Database类

Database类用于实现笔记数据的持久化存储和读取,在Android中可以使用SQLite来实现,该过程可以通过以下代码实现:

```java

public class DbOpenHelper extends SQLiteOpenHelper {

// 数据库名

static final String DATABASE_NAME = "note.db";

// 版本号

static final int DATABASE_VERSION = 1;

// 表名

static final String TABLE_NAME = "note";

// 列名

static final String COLUMN_ID = "_id";

static final String COLUMN_TITLE = "title";

static final String COLUMN_CONTENT = "content";

public DbOpenHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase database) {

String sql = "CREATE TABLE " + TABLE_NAME + " ("

+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"

+ COLUMN_TITLE + " TEXT NOT NULL,"

+ COLUMN_CONTENT + " TEXT NOT NULL);";

database.execSQL(sql);

}

@Override

public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {

database.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);

onCreate(database);

}

// 对外提供数据操作接口

public NoteRepository getRepository() {

return new NoteRepository(getWritableDatabase());

}

}

public class NoteRepository {

private SQLiteDatabase db;

public NoteRepository(SQLiteDatabase db) {

this.db = db;

}

public List findAll() {

List result = new ArrayList<>();

Cursor cursor = db.query(DbOpenHelper.TABLE_NAME, null, null, null, null, null, null);

while (cursor.moveToNext()) {

Note note = new Note();

note.id = cursor.getLong(cursor.getColumnIndex(DbOpenHelper.COLUMN_ID));

note.title = cursor.getString(cursor.getColumnIndex(DbOpenHelper.COLUMN_TITLE));

note.content = cursor.getString(cursor.getColumnIndex(DbOpenHelper.COLUMN_CONTENT));

result.add(note);

}

cursor.close();

return result;

}

public void delete(Note note) {

db.delete(DbOpenHelper.TABLE_NAME, DbOpenHelper.COLUMN_ID + "=?", new String[]{String.valueOf(note.id)});

}

public long create(Note note) {

ContentValues values = new ContentValues();

values.put(DbOpenHelper.COLUMN_TITLE, note.title);

values.put(DbOpenHelper.COLUMN_CONTENT, note.content);

return db.insert(DbOpenHelper.TABLE_NAME, null, values);

}

public void update(Note oldNote, Note newNote) {

ContentValues values = new ContentValues();

values.put(DbOpenHelper.COLUMN_TITLE, newNote.title);

values.put(DbOpenHelper.COLUMN_CONTENT, newNote.content);

db.update(DbOpenHelper.TABLE_NAME, values, DbOpenHelper.COLUMN_ID + "=?", new String[]{String.valueOf(oldNote.id)});

}

}

```

3.3创建Activity类

为了缩短代码长度,这里只列出MainActivity和NoteEditActivity的代码。MainActivity如下:

```java

public class MainActivity extends AppCompatActivity {

private NoteListAdapter noteListAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

RecyclerView recyclerView = findViewById(R.id.note_list);

recyclerView.setLayoutManager(new LinearLayoutManager(this));

noteListAdapter = new NoteListAdapter(this);

recyclerView.setAdapter(noteListAdapter);

FloatingActionButton fab = findViewById(R.id.fab);

fab.setOnClickListener(view -> {

Intent intent = new Intent(MainActivity.this, NoteEditActivity.class);

startActivityForResult(intent, 0x10);

});

}

@Override

protected void onResume() {

super.onResume();

// 从数据库中加载笔记数据

List noteList = DbOpenHelper.getInstance(this).getRepository().findAll();

noteListAdapter.setDataset(noteList);

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

// 处理新建笔记界面和编辑笔记界面的返回

if (resultCode == Activity.RESULT_OK) {

if (requestCode == 0x10) { // 新建笔记

Bundle bundle = data.getExtras();

DbOpenHelper.getInstance(this).getRepository().create(createNoteFromBundle(bundle));

} else if (requestCode == 0x20) { // 编辑笔记

Bundle bundle = data.getExtras();

Note oldNote = (Note) bundle.getSerializable("note");

Note newNote = createNoteFromBundle(bundle);

DbOpenHelper.getInstance(this).getRepository().update(oldNote, newNote);

}

List noteList = DbOpenHelper.getInstance(this).getRepository().findAll();

noteListAdapter.setDataset(noteList);

}

}

private Note createNoteFromBundle(Bundle bundle) {

Note note = new Note();

note.title = bundle.getString("title");

note.content = bundle.getString("content");

return note;

}

}

```

NoteEditActivity如下:

```java

public class NoteEditActivity extends AppCompatActivity {

private EditText editTitle;

private EditText editContent;

private String originalTitle;

private String originalContent;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_note_edit);

editTitle = findViewById(R.id.edit_title);

editContent = findViewById(R.id.edit_content);

Intent currentIntent = getIntent();

if (currentIntent != null) {

originalTitle = currentIntent.getStringExtra("title");

originalContent = currentIntent.getStringExtra("content");

editTitle.setText(originalTitle);

editContent.setText(originalContent);

}

FloatingActionButton fab = findViewById(R.id.fab);

fab.setOnClickListener(view -> {

Intent data = new Intent();

Bundle bundle = new Bundle();

bundle.putString("title", editTitle.getText().toString());

bundle.putString("content", editContent.getText().toString());

data.putExtras(bundle);

setResult(Activity.RESULT_OK, data);

finish();

});

}

@Override

public void onBackPressed() {

Bundle bundle = new Bundle();

bundle.putSerializable("note", createNoteFromView());

Intent data = new Intent();

data.putExtras(bundle);

setResult(Activity.RESULT_OK, data);

super.onBackPressed();

}

private Note createNoteFromView() {

Note note = new Note();

note.title = editTitle.getText().toString();

note.content = editContent.getText().toString();

return note;

}

}

```

4.结论

本文介绍了一种基于Android平台开发的记事本应用程序,并对其核心功能和实现细节进行了介绍。通过该应用程序的实现可以帮助初学者了解Android应用程序的开发过程和基本思想,也可以启发开发者思考如何在现有应用程序架构基础上进行拓展和优化。


相关知识:
安卓ai开发模块
安卓AI开发模块,即安卓人工智能开发模块,是一种集成开发环境,能够快速为安卓设备提供人工智能功能,包括自然语言处理、图像识别、语音识别、智能推荐等。安卓AI开发模块主要由图像识别、语音识别、自然语言处理三部分组成,其中每一部分都有自己的核心技术和实现方式。
2023-05-23
安卓12开发区预览版
安卓12是谷歌公司推出的最新版本的安卓操作系统,该操作系统于2021年5月18日发布了首个开发者预览版,随后的几个月里推出了多个更新版本供开发者测试和反馈。本文将介绍安卓12开发区预览版的相关信息和特点。首先,安卓12开发区预览版对于开发者而言是一个极好的
2023-05-23
安卓11开发者模式怎么开的
安卓11是目前最新的安卓操作系统版本,它带来了一些新的功能和特性。其中一个特性是开发者模式。开发者模式可以让开发者获取更多的功能和控制权。本文将详细介绍如何开启安卓11开发者模式及其原理。一、开启安卓11开发者模式的方法1.打开设置在你的安卓11设备上,下
2023-05-23
安卓 手机 app开发
安卓手机是大家非常熟悉的智能手机操作系统之一,它基于Linux核心进行开发,因此安卓应用开发与Linux系统的开发息息相关,同时也与Java编程密不可分。安卓应用开发包含很多技术,如:Java编程、Android SDK、Android Studio、Gr
2023-05-23
xcode能开发安卓
Xcode是苹果公司的开发工具软件,主要用于开发iOS、macOS等苹果产品的应用程序。因为苹果公司与谷歌公司的安卓系统是竞争关系,所以Xcode并不直接支持安卓开发。不过,通过一些特定的技术手段,你是有可能在Xcode中开发出安卓应用的。Xcode基于苹
2023-05-23
qt开发安卓是否可以替代原生态
Qt是一个跨平台的应用程序开发框架,可以在多种操作系统上运行。这也是它在Android平台上的应用得以实现的主要原因。Qt允许我们为多个平台开发一个代码库,并将其移植到Android系统上。在Android上使用Qt可以让我们更快地创建应用程序并获得更好的
2023-05-23
eclipse做安卓开发
Eclipse是一款开源的集成开发环境,广泛应用于Java程序开发、Web应用开发、移动应用开发等领域。其中,在移动应用开发方面,Eclipse被广泛应用于安卓开发中。Eclipse可以通过插件的方式扩展其功能,目前安卓官方推荐的安卓开发工具是Androi
2023-05-23
adam4150安卓开发
安卓开发是指开发运行在安卓手机或其他安卓设备上的应用程序。安卓开发使用的主要工具是Java编程语言和安卓软件开发工具包(SDK),开发者可以用Java编写安卓应用并使用SDK将其部署到设备上。下面我们将详细介绍adam4150的安卓开发原理。adam415
2023-05-23
苹果安卓原生手机app制作开发
在移动应用程序开发中,iOS和Android是两个最流行的平台,它们都有其独特的开发方式。对于iOS开发,我们需要使用Objective-C或Swift编程语言,同时需要Apple开发软件包(Xcode)来编译和调试我们的代码。在编程过程中,我们需要使用A
2023-04-28
简阳怎么开发安卓app
在这篇文章中,我们将简要介绍如何开发安卓应用程序的原理和详细步骤。安卓应用的开发主要涉及到以下几个方面:设计、编码、测试、发布与维护等环节。一、开发环境搭建首先,需要准备好开发的环境。常用的安卓应用开发工具是 Android Studio,你可以从这个网址
2023-04-28
安卓版手机制作手机app
在进行安卓手机app制作前,需要一些基本的技术准备:1. 熟悉Java编程语言2. 了解安卓手机操作系统的基本原理和架构3. 掌握安卓手机应用程序开发的基础知识4. 掌握常用代码编辑器的使用下面是安卓手机app制作的基本流程:1. 安装Android St
2023-04-28
myeclipse开发安卓app
MyEclipse是一款基于Eclipse平台的Java开发集成环境,提供了丰富的功能和扩展插件,可以用于开发Web应用、桌面应用和移动应用等。本文将介绍使用MyEclipse开发安卓应用的主要原理和步骤。原理安卓应用可以使用Java语言开发,MyEcli
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1