继续上一篇,个人日记本开发。通过上一篇,日记本的数据库部分已经完成,现在就来实现添加、删除功能:
一:在String中定义:
<resources>
<string name="app_name">MyDiary01</string>
<string name="hello_world">Hello world!</string>
<string name="menu_add">添加一篇新日记</string>
<string name="menu_delete">删除一篇日记</string>
<string name="label_title">标题</string>
<string name="label_content">内容</string>
<string name="save">保存日记</string>
<string name="title_activity_diary">DiaryActivity</string>
</resources>
二:在menu中的activity_diary.xml中布局菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_add"
android:title="@string/menu_add"
android:icon="@android:drawable/ic_menu_add"//引入添加图标
android:orderInCategory="100" />
<item android:id="@+id/menu_delete"
android:title="@string/menu_delete"
android:icon="@android:drawable/ic_menu_delete"//引入删除图标
android:orderInCategory="100" />
</menu>
三:(1)布局activity_diary.xml文件,显示日记内容页面:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/star"
android:orientation="vertical" >
<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
//当日记内容为空时: <TextView
android:id="@id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你好懒啊,还没开始写日记呢" />
</LinearLayout>
(2)item.xml显示每一条日记内容布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="20sp" />
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:textSize="12sp" />
</LinearLayout>
(3)edit.xml:添加日记页面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/label_title" />
<EditText
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/label_content" />
<EditText
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:layout_weight="1" />
<Button
android:id="@+id/confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="diaryAdd"//点击事件
android:text="@string/save" />
</LinearLayout>
四 完善DiaryService内容,增加添加、删除功能:
public class DiaryService {
private DBHelper dbHelper;
private SQLiteDatabase sqLiteDatabase;
public DiaryService(Context context) {
dbHelper = new DBHelper(context);
}
public void save(Diary diary) {
sqLiteDatabase = dbHelper.getWritableDatabase();
String sql = "insert into tb_diary(title,content,pubdate) values(?,?,?)";
sqLiteDatabase.execSQL(
sql,
new String[] { diary.getTitle(), diary.getContent(),
diary.getPubdate() });
}
public Cursor getAllDiaries(){
sqLiteDatabase=dbHelper.getReadableDatabase();
Cursor cursor=sqLiteDatabase.rawQuery("select * from tb_diary", null);
return cursor;
}//代替listview实现列表显示功能
public void delete(Integer id){
sqLiteDatabase=dbHelper.getWritableDatabase();
sqLiteDatabase.delete("tb_diary", "_id=?", new String[]{id.toString()});
}
}
五 完善DiaryTest文件实现添加、删除功能:
public class DiaryTest extends AndroidTestCase {
public void testOnCreate(){
DBHelper dbHelper=new DBHelper(getContext());
dbHelper.getWritableDatabase();
}
public void testSave(){
DiaryService diaryService=new DiaryService(getContext());
Diary diary1=new Diary("今天天气不错", "正在学习Sqlite", formate(new Date()));
Diary diary2=new Diary("今天天气阴", "心情很好", formate(new Date()));
diaryService.save(diary1);
diaryService.save(diary2);
}
public String formate(Date date){
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日");
return simpleDateFormat.format(date);
}
public void testDelete(){
DiaryService diaryService=new DiaryService(getContext());
diaryService.delete(1);
}
}
基于以上,添加tools包,工具类 DateFormatTools,方便使用:
public class DateFormatTools {
public static String format(Date date){
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日");
return simpleDateFormat.format(date);
}
}
六 完成处理文件(1)DiaryActivity:
public class DiaryActivity extends ListActivity {
private int idChoosed;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_diary);
refreshlist();
getListView().setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> listview, View view,
int position, long id) {
System.out.println("id="+id);
idChoosed=(int) id;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
private void refreshlist() {
DiaryService diaryService = new DiaryService(this);
Cursor cursor = diaryService.getAllDiaries();
//startManagingCursor(cursor);
SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this,
R.layout.item, cursor, new String[] { "title", "pubdate" },
new int[] { R.id.title, R.id.date });
setListAdapter(simpleCursorAdapter);
}//实现快速刷新
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_diary, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.menu_add:
Toast.makeText(this, "add",Toast.LENGTH_LONG).show();
Intent intent=new Intent(this,DiaryAdd.class);
//startActivity(intent);
startActivityForResult(intent, 1);
break;
case R.id.menu_delete:
AlertDialog.Builder aBuilder=new AlertDialog.Builder(this);
aBuilder.setTitle("你确定要删除吗?");
aBuilder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DiaryService diaryService=new DiaryService(DiaryActivity.this);
diaryService.delete(idChoosed);
refreshlist();
}
});
aBuilder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
aBuilder.show();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (resultCode) {
case RESULT_OK:
refreshlist();
break;
default:
break;
}
}
}
(2)DiaryAdd,添加页面:
public class DiaryAdd extends Activity {
private EditText titleText;
private EditText contentText;
private Button saveButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.edit);
titleText=(EditText) this.findViewById(R.id.title);
contentText=(EditText) this.findViewById(R.id.content);
saveButton=(Button) this.findViewById(R.id.confirm);
}
public void diaryAdd(View view){
String title=titleText.getText().toString();
String content=contentText.getText().toString();
Diary diary=new Diary(title, content, DateFormatTools.format(new Date()));
DiaryService diaryService=new DiaryService(this);
diaryService.save(diary);
Toast.makeText(this, "保存成功", Toast.LENGTH_LONG).show();
setResult(RESULT_OK);
finish();
}
}
页面显示:
(1)如果日记本里没有内容:
(2)添加日记:
(3)日记保存成功:
分享到:
相关推荐
这里我们关注的是一个名为“安卓Android源码——日记本”的项目,这通常是一个简单的日记应用的源码实现。源码分析将帮助我们深入理解Android应用的基本结构、UI设计、数据存储以及用户交互的实现方式。 首先,`...
这篇文档将深入解析《安卓Android源码——个人毕设日记课程表》的相关知识点,主要涉及Android应用程序开发,源代码分析,以及可能涉及到的界面设计和数据管理。 Android系统是谷歌公司主导开发的开源移动操作系统...
本次实现了功能实用且齐全的日记本,界面友好,使用便捷,采用MVC架构设计。使用SQLite数据库存储数据,数据表有主题表、主题序号表、日记表、日记条目表、备忘录表、备忘录条目表和联系人表。系统有10多个页面,...
这个压缩包"移动应用程序设计基础——数据库实践——简单日记本.zip"显然是一个教学资源,旨在帮助学习者理解如何在Android环境中构建一个简单的日记应用,同时涉及到了数据库的使用。下面我们将详细探讨其中涉及到...
本文将深入探讨Android中的SQLite数据存储,以及如何通过"日记本"应用的增删改查(CRUD)操作实例来实践这一技术。 首先,我们需要理解SQLite的基本概念。SQLite是一个自包含、无服务器、零配置、事务型的SQL数据库...
在当今数字化时代,个人隐私的保护越来越受到重视,而私密日记本作为一个记录内心世界的私密空间,其数字化形式——Android小程序,成为了许多用户的新选择。本文将详细介绍如何使用Android技术来构建一款功能完善的...
这个压缩包文件“安卓Android源码——日记系统源码(数据库的基本操作).zip”包含了一个基于Android平台的日记应用的源代码,重点是数据库的基本操作。从文件名称列表来看,这似乎是一组图片资源,可能用于教程或者...
在这个名为"Android源码——日记系统源码(数据库的基本操作).zip"的压缩包中,我们可以探索一个基于Android平台的日记应用的源代码。这个应用的核心功能是利用数据库进行日记数据的存储和管理,因此,它涉及到...
《Sqlite在Android应用中的实践——以“小日记本”为例》 在移动开发领域,SQLite作为轻量级的关系型数据库,被广泛应用于各种应用程序,尤其是Android系统中。本篇文章将以一个名为“小日记本”的程序为例,深入...
8.4.2 完整地操作数据库——日记本实例 8.5 我的数据你来用——ContentProvider介绍 8.5.1 初识ContentProvider 8.5.2 使用ContentProvider读取系统数据 8.5.3 使用ContentProvider操作数据日记本实例 8.6 再学一招...
在本项目中,我们主要探讨的是一个基于Android平台的个人毕业设计应用——“日记课程表”。这个应用的源代码被包含在一个名为“Android应用源码个人毕设日记课程表.zip”的压缩包文件里。让我们深入了解一下这个应用...
在本项目中,我们讨论的是一个基于Android Studio开发的安卓应用程序——"安卓作业设计日记记事本app"。这个应用提供了用户管理个人信息、记录和管理日记条目的功能,旨在为用户提供一个便捷的个人日记管理平台。 ...
8.4.2 完整地操作数据库——日记本实例 147 8.5 我的数据你来用——ContentProvider介绍 155 8.5.1 初识ContentProvider 155 8.5.2 使用ContentProvider读取系统数据 156 8.5.3 使用ContentProvider...
【标题解析】 "基于Android的大学课程及日记的管理...总的来说,这个项目涵盖了Android应用开发的多个方面,从基本的编程技术到高级的功能实现,再到用户体验和安全性的考虑,对开发者的技术和设计能力都有较高的要求。
### 手机APP移动开发——个人心情日记本的设计与实现 #### 一、项目背景及意义 在全球化的大背景下,互联网已经成为人们生活中不可或缺的一部分。据统计,全球人口已经超过65亿,其中互联网用户在2014年8月就超过...
在Android中,有多种方式可以存储数据,如Shared Preferences用于轻量级数据,SQLite数据库适合结构化数据,或者使用云存储服务。日记本应用可能需要一个文本编辑器组件供用户输入内容,日期选择器帮助用户指定日记...
此外,应用还有一个关键特性——日记本上锁功能,这可能是通过密码、指纹或面部识别等安全机制来保护用户的隐私,确保只有拥有授权的用户才能访问他们的日记内容。课设还包括一份详细的报告,解释了项目的实施过程和...
《Android日记本应用开发详解——基于JoneCool-Android-MyDiary-master项目》 在Android开发领域,创建一个日记本应用是一项常见的实践任务,它能够帮助开发者掌握基础的UI设计、数据存储以及用户交互等核心技能。...
《Android开发:构建优雅的日记应用——以WatermelonDiaryNew为例》 在移动设备上,日记类应用程序一直是用户常用的应用之一,它们提供了一个私密的空间,让人们记录生活中的点滴和感悟。Android平台上的...