Android如何实现备忘录
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍了Android如何实现备忘录,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。提示:文章写完后,目录可以自动生成,如何生
千家信息网最后更新 2025年11月13日Android如何实现备忘录
这篇文章主要介绍了Android如何实现备忘录,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、首先创建保存数据的表
Notedatabase,java
package com.example.biji_1;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class NoteDatabase extends SQLiteOpenHelper { public static final String TABLE_NAME ="notes"; public static final String CONTENT ="content"; public static final String ID ="_id"; public static final String TIME ="time"; public static final String MODE ="mode"; public NoteDatabase(Context context){ super(context,"notes",null,1); } @Override public void onCreate(SQLiteDatabase db){ db.execSQL("CREATE TABLE " + TABLE_NAME + "(" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + CONTENT + " TEXT NOT NULL, " + TIME + " TEXT NOT NULL, " + MODE + " INTEGER DEFAULT 1)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion){ }}二、主界面
MainAcitivity.java
public class MainActivity extends BaseActivity implements AdapterView.OnItemClickListener { //test gittt private NoteDatabase dbHelper; private Context context = this; final String TAG = "tag"; FloatingActionButton btn; private ListView lv; private NoteAdapter adapter; private List noteList = new ArrayList(); private Toolbar myToolbar; //弹出菜单 private PopupWindow popupWindow; private PopupWindow popupCover; private ViewGroup customView; private ViewGroup coverView; private LayoutInflater layoutInflater; private RelativeLayout main; private WindowManager wm; private DisplayMetrics metrics; private TextView setting_text; private ImageView setting_image; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initPrefs(); btn = (FloatingActionButton) findViewById(R.id.fab); lv = findViewById(R.id.lv); myToolbar = findViewById(R.id.myToolbar); adapter = new NoteAdapter(getApplicationContext(), noteList); refreshListView(); lv.setAdapter(adapter); setSupportActionBar(myToolbar); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); //设置toolbar取代actionbar initPopUpView(); myToolbar.setNavigationIcon(R.drawable.ic_baseline_menu_24); myToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "onClick: shit"); showPopUpView(); } }); lv.setOnItemClickListener(this); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, EditActivity.class); intent.putExtra("mode", 4); startActivityForResult(intent, 0); } }); } public void initPopUpView(){ layoutInflater = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); customView = (ViewGroup) layoutInflater.inflate(R.layout.setting_layout, null); coverView = (ViewGroup) layoutInflater.inflate(R.layout.setting_cover, null); main = findViewById(R.id.main_layout); wm = getWindowManager(); metrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(metrics); } public void showPopUpView(){ int width = metrics.widthPixels; int height = metrics.heightPixels; popupCover = new PopupWindow(coverView, width, height, false); popupWindow = new PopupWindow(customView, (int) (width * 0.7), height, true); popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE)); //在主界面加载成功之后 显示弹出 findViewById(R.id.main_layout).post(new Runnable() { @Override public void run() { popupCover.showAtLocation(main, Gravity.NO_GRAVITY, 0, 0); popupWindow.showAtLocation(main, Gravity.NO_GRAVITY, 0, 0); setting_image = customView.findViewById(R.id.setting_settings_image); setting_text = customView.findViewById(R.id.setting_settings_text); setting_image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, UserSettingsActivity.class)); } }); setting_text.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, UserSettingsActivity.class)); } }); coverView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { popupWindow.dismiss(); return true; } }); popupWindow.setOnDismissListener(new Popup_Window.OnDismissListener() { @Override public void onDismiss() { popupCover.dismiss(); Log.d(TAG, "onDismiss: test"); } }); } }); } public void initPrefs(){ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); SharedPreferences.Editor editor = sharedPreferences.edit(); if (!sharedPreferences.contains("nightMode")) { editor.putBoolean("nightMode", false); editor.commit(); } } // 接受startActivityForResult的结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ int returnMode; long note_Id; returnMode = data.getExtras().getInt("mode", -1); note_Id = data.getExtras().getLong("id", 0); if (returnMode == 1) { //update current note String content = data.getExtras().getString("content"); String time = data.getExtras().getString("time"); int tag = data.getExtras().getInt("tag", 1); Note newNote = new Note(content, time, tag); newNote.setId(note_Id); CRUD op = new CRUD(context); op.open(); op.updateNote(newNote); op.close(); } else if (returnMode == 0) { // create new note String content = data.getExtras().getString("content"); String time = data.getExtras().getString("time"); int tag = data.getExtras().getInt("tag", 1); Note newNote = new Note(content, time, tag); CRUD op = new CRUD(context); op.open(); op.addNote(newNote); op.close(); } else if (returnMode == 2) { // delete Note curNote = new Note(); curNote.setId(note_Id); CRUD op = new CRUD(context); op.open(); op.removeNote(curNote); op.close(); } else{ } refreshListView(); super.onActivityResult(requestCode, resultCode, data); } //判断笔记状态 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); //search setting MenuItem mSearch = menu.findItem(R.id.action_search); SearchView mSearchView = (SearchView) mSearch.getActionView(); mSearchView.setQueryHint("请输入搜索内容"); mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String newText) { adapter.getFilter().filter(newText); return false; } }); return super.onCreateOptionsMenu(menu); } //搜索 @Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()){ case R.id.menu_clear: new AlertDialog.Builder(MainActivity.this) .setMessage("删除全部吗?") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dbHelper = new NoteDatabase(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); db.delete("notes", null, null); db.execSQL("update sqlite_sequence set seq=0 where name='notes'"); refreshListView(); } }).setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create().show(); break; } return super.onOptionsItemSelected(item); } //主界面删除 public void refreshListView(){ CRUD op = new CRUD(context); op.open(); // set adapter if (noteList.size() > 0) noteList.clear(); noteList.addAll(op.getAllNotes()); op.close(); adapter.notifyDataSetChanged(); } //刷新list @Override public void onItemClick(AdapterView> parent, View view, int position, long id) { switch (parent.getId()) { case R.id.lv: Note curNote = (Note) parent.getItemAtPosition(position); Intent intent = new Intent(MainActivity.this, EditActivity.class); intent.putExtra("content", curNote.getContent()); intent.putExtra("id", curNote.getId()); intent.putExtra("time", curNote.getTime()); intent.putExtra("mode", 3); // MODE of 'click to edit' intent.putExtra("tag", curNote.getTag()); startActivityForResult(intent, 1); //collect data from edit Log.d(TAG, "onItemClick: " + position); break; } } //携带数据} 2.1 activity_main.xml
三、:EditActivity.java
package com.example.biji_1;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.EditText;import androidx.appcompat.app.AlertDialog;import androidx.appcompat.widget.Toolbar;import java.text.SimpleDateFormat;import java.util.Date;public class EditActivity extends BaseActivity { EditText et; private Toolbar myToolbar; private String old_content = ""; private String old_time = ""; private int old_Tag = 1; private long id = 0; private int openMode = 0; private int tag = 1; public Intent intent = new Intent(); // message to be sent private boolean tagChange = false; private final String TAG = "tag"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit_layout); myToolbar = findViewById(R.id.myToolbar); setSupportActionBar(myToolbar); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); //设置toolbar取代actionbar myToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { autoSetMessage(); setResult(RESULT_OK, intent); finish(); } }); myToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { autoSetMessage(); setResult(RESULT_OK, intent); finish(); } }); et = findViewById(R.id.et_1); Intent getIntent = getIntent(); openMode = getIntent.getIntExtra("mode", 0); if (openMode == 3) {//打开已存在的note id = getIntent.getLongExtra("id", 0); old_content = getIntent.getStringExtra("content"); old_time = getIntent.getStringExtra("time"); old_Tag = getIntent.getIntExtra("tag", 1); et.setText(old_content); et.setSelection(old_content.length()); Log.d("TAG","打开"); } } //渲染菜单栏 @Override public boolean onCreateOptionsMenu(Menu menu_1) { getMenuInflater().inflate(R.menu.edit_menu,menu_1); return super.onCreateOptionsMenu(menu_1); } @Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()){ case R.id.delete: new AlertDialog.Builder(EditActivity.this) .setMessage("删除吗?") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (openMode == 4){ // new note intent.putExtra("mode", -1); setResult(RESULT_OK, intent); } else { // existing note intent.putExtra("mode", 2); intent.putExtra("id", id); setResult(RESULT_OK, intent); } finish(); } }).setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create().show(); break; } return super.onOptionsItemSelected(item); } public boolean onKeyDown(int keyCode, KeyEvent event){ if (keyCode == KeyEvent.KEYCODE_HOME){ return true; } else if (keyCode == KeyEvent.KEYCODE_BACK){ autoSetMessage(); setResult(RESULT_OK, intent); finish(); return true; } return super.onKeyDown(keyCode, event); } public void autoSetMessage(){ if(openMode == 4){ if(et.getText().toString().length() == 0){ intent.putExtra("mode", -1); //nothing new happens. } else{ intent.putExtra("mode", 0); // new one note; intent.putExtra("content", et.getText().toString()); intent.putExtra("time", dateToStr()); intent.putExtra("tag", tag); } } else { if (et.getText().toString().equals(old_content) && !tagChange) intent.putExtra("mode", -1); // edit nothing else { intent.putExtra("mode", 1); //edit the content intent.putExtra("content", et.getText().toString()); intent.putExtra("time", dateToStr()); intent.putExtra("id", id); intent.putExtra("tag", tag); } } } public String dateToStr(){ Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return simpleDateFormat.format(date); }}3.1 edit_layout.xml
四、对笔记进行增删查改
CRUD.java
package com.example.biji_1;import android.annotation.SuppressLint;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import java.util.ArrayList;import java.util.List;public class CRUD { SQLiteOpenHelper dbHandler; SQLiteDatabase db; private static final String[] columns = { NoteDatabase.ID, NoteDatabase.CONTENT, NoteDatabase.TIME, NoteDatabase.MODE }; public CRUD(Context context){ dbHandler = new NoteDatabase(context); } public void open(){ db = dbHandler.getWritableDatabase(); } public void close(){ dbHandler.close(); } //把note 加入到database里面 public Note addNote(Note note){ //add a note object to database ContentValues contentValues = new ContentValues(); contentValues.put(NoteDatabase.CONTENT, note.getContent()); contentValues.put(NoteDatabase.TIME, note.getTime()); contentValues.put(NoteDatabase.MODE, note.getTag()); long insertId = db.insert(NoteDatabase.TABLE_NAME, null, contentValues); note.setId(insertId); return note; } public Note getNote(long id){ //get a note from database using cursor index Cursor cursor = db.query(NoteDatabase.TABLE_NAME,columns,NoteDatabase.ID + "=?", new String[]{String.valueOf(id)},null,null, null, null); if (cursor != null) cursor.moveToFirst(); Note e = new Note(cursor.getString(1),cursor.getString(2), cursor.getInt(3)); return e; } @SuppressLint("Range") public List getAllNotes(){ Cursor cursor = db.query(NoteDatabase.TABLE_NAME,columns,null,null,null, null, null); List notes = new ArrayList<>(); if(cursor.getCount() > 0){ while(cursor.moveToNext()){ Note note = new Note(); note.setId(cursor.getLong(cursor.getColumnIndex(NoteDatabase.ID))); note.setContent(cursor.getString(cursor.getColumnIndex(NoteDatabase.CONTENT))); note.setTime(cursor.getString(cursor.getColumnIndex(NoteDatabase.TIME))); note.setTag(cursor.getInt(cursor.getColumnIndex(NoteDatabase.MODE))); notes.add(note); } } return notes; } //查找笔记 public int updateNote(Note note) { //update the info of an existing note ContentValues values = new ContentValues(); values.put(NoteDatabase.CONTENT, note.getContent()); values.put(NoteDatabase.TIME, note.getTime()); values.put(NoteDatabase.MODE, note.getTag()); // updating row return db.update(NoteDatabase.TABLE_NAME, values, NoteDatabase.ID + "=?",new String[] { String.valueOf(note.getId())}); } //更新笔记 public void removeNote(Note note) { //remove a note according to ID value db.delete(NoteDatabase.TABLE_NAME, NoteDatabase.ID + "=" + note.getId(), null); } //删除笔记} 4.1 note_layout.xml
五、演示效果
5.1 登录界面
哈哈界面随自己走各位别喷
5.2笔记界面
之前自己写的
5.3 增加记录
5.4删除记录
在主界面那个删除是删除全部会提示你 然后你点击进去之后还有一个删除那条记录的删除键 这里就不做演示了
5.5 查找记录
哈哈
##5.6 改记录
改之前
改之后可以看到时间变化
其它效果靠这样演示不出来,源码在下面可以自取
感谢你能够认真阅读完这篇文章,希望小编分享的"Android如何实现备忘录"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
界面
笔记
篇文章
演示
备忘录
备忘
效果
数据
菜单
参考
帮助
提示
搜索
生成
成功
价值
兴趣
内容
右边
同时
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
dnf手游不能连接服务器
河北锦恩软件开发有限公司公章
软件开发女孩子容易学吗
数据库应用程序开发
安卓游戏服务器中毒
微信里的培训档案数据库是什么
迷你sql数据库管理
上海联通dns服务器
ctf网络安全初级教程
软件开发师学习什么
遥志邮件服务器
网络技术选科要求
大连数据库价格
数据库什么时候会用索引
数据库里建字典库
外国科技互联网
宁海软件开发项目管理
服务器不允许远程连接
软件开发行业创业经历
imperial软件开发
国开网数据库应用技术期末考试
手机联网汽车跟服务器
网络安全法草案设施
nb网络技术
数据库什么叫填充因子
软件开发成功率
中国甘肃网青少年网络安全知识
数据库完整性约束实验
2008数据库安装成功如何调试
有趣的软件开发图片