`
he91_com
  • 浏览: 397246 次
文章分类
社区版块
存档分类
最新评论

Android SQLite存储——个人日记本开发(二):添加、删除功能的实现

 
阅读更多

继续上一篇,个人日记本开发。通过上一篇,日记本的数据库部分已经完成,现在就来实现添加、删除功能:

一:在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源码——日记本.zip

    这里我们关注的是一个名为“安卓Android源码——日记本”的项目,这通常是一个简单的日记应用的源码实现。源码分析将帮助我们深入理解Android应用的基本结构、UI设计、数据存储以及用户交互的实现方式。 首先,`...

    安卓Android源码——个人毕设日记课程表.zip

    这篇文档将深入解析《安卓Android源码——个人毕设日记课程表》的相关知识点,主要涉及Android应用程序开发,源代码分析,以及可能涉及到的界面设计和数据管理。 Android系统是谷歌公司主导开发的开源移动操作系统...

    Android实现多功能日记本,优秀毕业设计源代码,小白必看!

    本次实现了功能实用且齐全的日记本,界面友好,使用便捷,采用MVC架构设计。使用SQLite数据库存储数据,数据表有主题表、主题序号表、日记表、日记条目表、备忘录表、备忘录条目表和联系人表。系统有10多个页面,...

    移动应用程序设计基础——数据库实践——简单日记本.zip

    这个压缩包"移动应用程序设计基础——数据库实践——简单日记本.zip"显然是一个教学资源,旨在帮助学习者理解如何在Android环境中构建一个简单的日记应用,同时涉及到了数据库的使用。下面我们将详细探讨其中涉及到...

    Android的Sqlite数据存储

    本文将深入探讨Android中的SQLite数据存储,以及如何通过"日记本"应用的增删改查(CRUD)操作实例来实践这一技术。 首先,我们需要理解SQLite的基本概念。SQLite是一个自包含、无服务器、零配置、事务型的SQL数据库...

    私密日记本android小程序

    在当今数字化时代,个人隐私的保护越来越受到重视,而私密日记本作为一个记录内心世界的私密空间,其数字化形式——Android小程序,成为了许多用户的新选择。本文将详细介绍如何使用Android技术来构建一款功能完善的...

    安卓Android源码——日记系统源码(数据库的基本操作).zip

    这个压缩包文件“安卓Android源码——日记系统源码(数据库的基本操作).zip”包含了一个基于Android平台的日记应用的源代码,重点是数据库的基本操作。从文件名称列表来看,这似乎是一组图片资源,可能用于教程或者...

    Android源码——日记系统源码(数据库的基本操作).zip

    在这个名为"Android源码——日记系统源码(数据库的基本操作).zip"的压缩包中,我们可以探索一个基于Android平台的日记应用的源代码。这个应用的核心功能是利用数据库进行日记数据的存储和管理,因此,它涉及到...

    小日记本程序,主要是练习Sqlite

    《Sqlite在Android应用中的实践——以“小日记本”为例》 在移动开发领域,SQLite作为轻量级的关系型数据库,被广泛应用于各种应用程序,尤其是Android系统中。本篇文章将以一个名为“小日记本”的程序为例,深入...

    Google.Android开发入门与实战

    8.4.2 完整地操作数据库——日记本实例 8.5 我的数据你来用——ContentProvider介绍 8.5.1 初识ContentProvider 8.5.2 使用ContentProvider读取系统数据 8.5.3 使用ContentProvider操作数据日记本实例 8.6 再学一招...

    Android应用源码个人毕设日记课程表.zip

    在本项目中,我们主要探讨的是一个基于Android平台的个人毕业设计应用——“日记课程表”。这个应用的源代码被包含在一个名为“Android应用源码个人毕设日记课程表.zip”的压缩包文件里。让我们深入了解一下这个应用...

    安卓作业设计日记记事本app(Androidstudio实现的)

    在本项目中,我们讨论的是一个基于Android Studio开发的安卓应用程序——"安卓作业设计日记记事本app"。这个应用提供了用户管理个人信息、记录和管理日记条目的功能,旨在为用户提供一个便捷的个人日记管理平台。 ...

    Google Android开发入门与实战的代码

    8.4.2 完整地操作数据库——日记本实例 147 8.5 我的数据你来用——ContentProvider介绍 155 8.5.1 初识ContentProvider 155 8.5.2 使用ContentProvider读取系统数据 156 8.5.3 使用ContentProvider...

    基于Android的大学课程及日记的管理.zip

    【标题解析】 "基于Android的大学课程及日记的管理...总的来说,这个项目涵盖了Android应用开发的多个方面,从基本的编程技术到高级的功能实现,再到用户体验和安全性的考虑,对开发者的技术和设计能力都有较高的要求。

    手机APP移动开发论文语创编.docx

    ### 手机APP移动开发——个人心情日记本的设计与实现 #### 一、项目背景及意义 在全球化的大背景下,互联网已经成为人们生活中不可或缺的一部分。据统计,全球人口已经超过65亿,其中互联网用户在2014年8月就超过...

    移动应用程序设计基础——期末考核——登录界面与简单日记本的综合实践.zip

    在Android中,有多种方式可以存储数据,如Shared Preferences用于轻量级数据,SQLite数据库适合结构化数据,或者使用云存储服务。日记本应用可能需要一个文本编辑器组件供用户输入内容,日期选择器帮助用户指定日记...

    diary3 (2).zip

    此外,应用还有一个关键特性——日记本上锁功能,这可能是通过密码、指纹或面部识别等安全机制来保护用户的隐私,确保只有拥有授权的用户才能访问他们的日记内容。课设还包括一份详细的报告,解释了项目的实施过程和...

    JoneCool-Android-MyDiary-master_android_androidstudio_Androidstu

    《Android日记本应用开发详解——基于JoneCool-Android-MyDiary-master项目》 在Android开发领域,创建一个日记本应用是一项常见的实践任务,它能够帮助开发者掌握基础的UI设计、数据存储以及用户交互等核心技能。...

    Android-WatermelonDiaryNew十分简洁优雅的日记APP

    《Android开发:构建优雅的日记应用——以WatermelonDiaryNew为例》 在移动设备上,日记类应用程序一直是用户常用的应用之一,它们提供了一个私密的空间,让人们记录生活中的点滴和感悟。Android平台上的...

Global site tag (gtag.js) - Google Analytics