Android记事本NotePad应用功能拓展
16lz
2021-01-26
Android记事本NotePad应用功能拓展
一、实现功能
1.NoteList中显示条目增加时间戳显示
添加时间戳2.添加笔记查询功能(根据标题查询)
查询功能查询功能
3.设置功能(初步实现)
设置功能 设置功能4.优化删除功能
删除功能 全部删除功能
二、项目代码分析以及源码
首先贴出大家最想要的源码吧!
源码(C币为防伸手党....认真阅读相关资料,细心的你会发现免费下载的途径)
1.NoteList中显示条目增加时间戳显示
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); }
2.添加笔记查询功能(根据标题查询)
@Override public View getView(int position, View convertView, ViewGroup parent) { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext); mContext.setTheme(R.style.DayTheme); View v = View.inflate(mContext, R.layout.note_layout, null); TextView tv_content = (TextView)v.findViewById(R.id.tv_content); TextView tv_time = (TextView)v.findViewById(R.id.tv_time); //Set text for TextView String allText = noteList.get(position).getContent(); /*if (sharedPreferences.getBoolean("noteTitle" ,true)) tv_content.setText(allText.split("\n")[0]);*/ tv_content.setText(allText); tv_time.setText(noteList.get(position).getTime()); //Save note id to tag v.setTag(noteList.get(position).getId()); return v; } @Override public Filter getFilter() { if (mFilter ==null){ mFilter = new MyFilter(); } return mFilter; } class MyFilter extends Filter { //我们在performFiltering(CharSequence charSequence)这个方法中定义过滤规则 @Override protected FilterResults performFiltering(CharSequence charSequence) { FilterResults result = new FilterResults(); List list; if (TextUtils.isEmpty(charSequence)) {//当过滤的关键字为空的时候,我们则显示所有的数据 list = backList; } else {//否则把符合条件的数据对象添加到集合中 list = new ArrayList<>(); for (Note note : backList) { if (note.getContent().contains(charSequence)) { list.add(note); } } } result.values = list; //将得到的集合保存到FilterResults的value变量中 result.count = list.size();//将集合的大小保存到FilterResults的count变量中 return result; } //在publishResults方法中告诉适配器更新界面 @Override protected void publishResults(CharSequence charSequence, FilterResults filterResults) { noteList = (List)filterResults.values; if (filterResults.count>0){ notifyDataSetChanged();//通知数据发生了改变 }else { notifyDataSetInvalidated();//通知数据失效 } }
3.设置功能(初步实现)
setting_layout.xml里面找找。
4.优化删除功能
部分删除
@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); }
全部删除
@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); }
三、后期计划
UI美化
更改记事本的背景
导出笔记,笔记的云备份和恢复
添加代办功能
记事本的设置的功能
笔记分类
支持多种资源,如保存图片、语音、视频等(参考印象笔记)
语音搜索?
笔记便签
四、参考资料
1.彩色笔记
2.印象笔记
3.数据存储的基本知识
使用SQLite数据库进行数据存储
4.ContentProvider: ContentProvider用于数据共享,如果你不提供数据共享机制,可以不使用
https://developer.android.google.cn/guide/topics/providers/content-provider-basics
https://developer.android.google.cn/guide/topics/providers/content-provider-creating
更多相关文章
- Android用Broadcast实现EventBus的功能和用法
- Android菜鸟的成长笔记(24)——Android中的振动器
- Android系统架构学习笔记
- 【Android(安卓)开发】:UI控件之 ImageView 实现图片旋转和缩放功
- SD功能移植
- 任务
- Android中点击空白区域隐藏软键盘功能实现
- Android图片开源库:最全面、详细的Picasso讲解
- java/android 设计模式学习笔记(17)---策略模式