效果图:
当程序运行后,首先进入日记列表,显示如图:
长时间点击某个日记,将跳转至修改日记界面:
点击menu后,显示如图:
点击编辑新日志将跳转至添加新日记界面:
选中某个日记,点击删除日记,将弹出提示框:
点击“确定”,删除日记,点击“取消”,返回日记列表页面
具体实现方法:
实体类:
package cn.bzu.mydiary.model;
public class Diary {
private int id;
private String title;
private String content;
private String pubdate;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPubdate() {
return pubdate;
}
public void setPubdate(String pubdate) {
this.pubdate = pubdate;
}
public Diary(String title,String content,String pubdate) {
super();
this.title = title;
this.content = content;
this.pubdate = pubdate;
}
public Diary(int id,String title,String pubdate) {
super();
this.id = id;
this.title = title;
this.content = content;
this.pubdate = pubdate;
}
public Diary(int id,String content) {
super();
this.id = id;
this.title = title;
this.content = content;
}
}
创建数据库的类(数据库保存在DDMS/data/data/cn.bzu.mydiary/database/diary.db)
package cn.bzu.mydiary.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper{
private static String DATABASE_NAME="diary.db";
private static int DATABASE_VERSION=1;
public DBHelper(Context context) {
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table tb_diary(_id integer primary key autoincrement,title verchar(20),content verchar(1000),pubdate)");
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {
}
}
数据库操作类
package cn.bzu.mydiary.service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import cn.bzu.mydiary.db.DBHelper;
import cn.bzu.mydiary.model.Diary;
public class DiaryService {
private DBHelper dbHelper;
SQLiteDatabase sqLiteDatabase = null;
public DiaryService(Context context) {
dbHelper = new DBHelper(context);
}
/**
* 保存日记
*
* @param diary
*/
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() });
sqLiteDatabase.close();
}
// 查询日志
public List<Diary> getAllDiary() {
Diary diary = null;
List<Diary> diaryList = new ArrayList<Diary>();
sqLiteDatabase = dbHelper.getReadableDatabase();
// 得到游标,最多只有一条数据
Cursor cursor = sqLiteDatabase.rawQuery("select * from tb_diary",null);
while (cursor.moveToNext()) {
int id = cursor.getInt(0);
String title = cursor.getString(cursor.getColumnIndex("title"));
String content = cursor.getString(cursor.getColumnIndex("content"));
String pubdate = cursor.getString(cursor.getColumnIndex("pubdate"));
diary = new Diary(id,title,pubdate);
diaryList.add(diary);
}
cursor.close();
sqLiteDatabase.close();
return diaryList;
}
/**
* 根据id删除日记
*
* @param id
* 日记的id号
*/
public void delete(Integer id) {
sqLiteDatabase = dbHelper.getReadableDatabase();
sqLiteDatabase.execSQL("delete from tb_diary where _id=?",new Object[] { id });
sqLiteDatabase.close();
}
/**
* 更新日记
*
* @param diary
*/
public void update(Diary diary) {
sqLiteDatabase = dbHelper.getReadableDatabase();
sqLiteDatabase.execSQL(
"update tb_diary set title=?,content=?,pubdate=? where _id=?",new Object[] { diary.getTitle(),diary.getPubdate(),diary.getId() });
sqLiteDatabase.close();
}
// //获取记录总数
// public long count(){
// long count=0;
// SQLiteDatabase sqLiteDatabase=dbHelper.getReadableDatabase();
// Cursor cursor=sqLiteDatabase.rawQuery("select count(*) from tb_diary",// null);
// cursor.moveToFirst();
// count=cursor.getLong(0);
// return count;
// }
}
相应的布局文件:activity_add_diary.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:background="@drawable/back"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title" />
<EditText
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/content" />
<EditText
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:lines="6" />
<Button
android:id="@+id/save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/save" />
</LinearLayout>
activity_diary.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:background="@drawable/back"
android:layout_height="fill_parent" >
<ListView
android:id="@+id/diary"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:visibility="invisible" />
<Button
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/delete"
android:visibility="invisible" />
</RelativeLayout>
</RelativeLayout>
list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left" />
<TextView
android:id="@+id/pubdate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right" />
</LinearLayout>
DiaryActivity.java
package cn.bzu.mydiary;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.bzu.mydiary.model.Diary;
import cn.bzu.mydiary.service.DiaryService;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class DiaryActivity extends Activity {
private List<Map<String,?>> diary;
private ListView diaryList;
private Button add,delete;
DiaryService diaryService;
AlertDialog deleteDiaryAlert;
SimpleAdapter simpleAdapter;
int id;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_diary);
onRestart();
}
@Override
protected void onRestart() {
super.onRestart();
diaryList = (ListView) this.findViewById(R.id.diary);
add = (Button) this.findViewById(R.id.add);
delete = (Button) this.findViewById(R.id.delete);
diary = getDiary();
simpleAdapter = new SimpleAdapter(this,diary,R.layout.list_item,new String[] { "title","pubdate" },new int[] { R.id.title,R.id.pubdate });
diaryList.setAdapter(simpleAdapter);
//获取删除时需要的id
diaryList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0,View arg1,int position,long arg3) {
id = (Integer) diary.get(position).get("id");
}
});
//长时间按该日志,可以跳转至修改页面
diaryList.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0,long arg3) {
id = (Integer) diary.get(position).get("id");
String title = (String) diary.get(position).get("title");
String content = (String) diary.get(position).get("content");
Diary d = new Diary(id,content);
Intent intent = new Intent();
intent.setClass(DiaryActivity.this,AddDiaryActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("id",id);
bundle.putString("title",title);
bundle.putString("content",content);
intent.putExtra("diary",bundle);
startActivity(intent);
return false;
}
});
}
private List<Map<String,?>> getDiary() {
List<Map<String,?>> data = new ArrayList<Map<String,?>>();
Map<String,Object> item = null;
diaryService = new DiaryService(DiaryActivity.this);
List<Diary> list = diaryService.getAllDiary();
for (int i = 0; i < list.size(); i++) {
Diary d = list.get(i);
item = new HashMap<String,Object>();
item.put("id",d.getId());// ID
item.put("title",d.getTitle());// 标题
item.put("content",d.getContent());
item.put("pubdate",d.getPubdate());// 出版日期
data.add(item);
}
return data;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
// 创建菜单,并设置图表
menu.add(0,R.id.add,"编辑新日志").setIcon(
android.R.drawable.ic_input_add);
menu.add(0,R.id.delete,1,"删除该日志").setIcon(
android.R.drawable.ic_input_delete);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add:
Intent intent = new Intent();
intent.setClass(DiaryActivity.this,AddDiaryActivity.class);
startActivity(intent);
break;
case R.id.delete:
deleteDiaryDialog();
deleteDiaryAlert.show();
break;
}
return super.onOptionsItemSelected(item);
}
// 删除日志
private void deleteDiaryDialog() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("请确定是否删除日记");
alertDialog.setPositiveButton("确定",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
// System.out.print("id:"+id);
diaryService.delete(id);
onRestart();
}
});
alertDialog.setNegativeButton("取消",int which) {
dialog.cancel();
}
});
deleteDiaryAlert = alertDialog.create();
}
}
AddDiaryActivity.java
package cn.bzu.mydiary;
import java.text.SimpleDateFormat;
import java.util.Date;
import cn.bzu.mydiary.model.Diary;
import cn.bzu.mydiary.service.DiaryService;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Shader.TileMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.support.v4.app.NavUtils;
public class AddDiaryActivity extends Activity {
private EditText titleText;
private EditText contentText;
private Button save;
int id;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_diary);
titleText=(EditText) this.findViewById(R.id.title);
contentText=(EditText) this.findViewById(R.id.content);
save=(Button) this.findViewById(R.id.save);
final Bundle bundle = this.getIntent().getBundleExtra("diary");
if(bundle==null){
save.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String title=titleText.getText().toString();
String content=contentText.getText().toString();
DiaryService diaryService=new DiaryService(AddDiaryActivity.this);
Diary diary=new Diary(title,fomate());
diaryService.save(diary);
Intent intent=new Intent();
intent.setClass(AddDiaryActivity.this,DiaryActivity.class);
startActivity(intent);
}
});
}else{
titleText.setText(bundle.getString("title"));
contentText.setText(bundle.getString("content"));
id =bundle.getInt("id");
save.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String title=titleText.getText().toString();
String content=contentText.getText().toString();
DiaryService diaryService=new DiaryService(AddDiaryActivity.this);
Diary diary=new Diary(id,fomate());
diaryService.update(diary);
Intent intent=new Intent();
intent.setClass(AddDiaryActivity.this,DiaryActivity.class);
startActivity(intent);
}
});
}
}
public String fomate(){
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 hh时:mm分:ss秒");
return simpleDateFormat.format(new Date());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_add_diary,menu);
return true;
}
}
可以先建测试类测试一下,确认无误后,再运行,若要测试勿忘在AndroidManifest.xml中配置哦
package cn.bzu.mydiary;
import java.text.SimpleDateFormat;
import java.util.Date;
import cn.bzu.mydiary.model.Diary;
import cn.bzu.mydiary.service.DiaryService;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Shader.TileMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.support.v4.app.NavUtils;
public class AddDiaryActivity extends Activity {
private EditText titleText;
private EditText contentText;
private Button save;
int id;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_diary);
titleText=(EditText) this.findViewById(R.id.title);
contentText=(EditText) this.findViewById(R.id.content);
save=(Button) this.findViewById(R.id.save);
final Bundle bundle = this.getIntent().getBundleExtra("diary");
if(bundle==null){
save.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String title=titleText.getText().toString();
String content=contentText.getText().toString();
DiaryService diaryService=new DiaryService(AddDiaryActivity.this);
Diary diary=new Diary(title,menu);
return true;
}
}
package cn.bzu.mydiary;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.bzu.mydiary.model.Diary;
import cn.bzu.mydiary.service.DiaryService;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class DiaryActivity extends Activity {
private List<Map<String,int which) {
dialog.cancel();
}
});
deleteDiaryAlert = alertDialog.create();
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left" />
<TextView
android:id="@+id/pubdate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right" />
</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:background="@drawable/back"
android:layout_height="fill_parent" >
<ListView
android:id="@+id/diary"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:visibility="invisible" />
<Button
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/delete"
android:visibility="invisible" />
</RelativeLayout>
</RelativeLayout>
<?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:background="@drawable/back"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title" />
<EditText
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/content" />
<EditText
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:lines="6" />
<Button
android:id="@+id/save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/save" />
</LinearLayout>
package cn.bzu.mydiary.service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import cn.bzu.mydiary.db.DBHelper;
import cn.bzu.mydiary.model.Diary;
public class DiaryService {
private DBHelper dbHelper;
SQLiteDatabase sqLiteDatabase = null;
public DiaryService(Context context) {
dbHelper = new DBHelper(context);
}
/**
* 保存日记
*
* @param diary
*/
public void save(Diary diary) {
sqLiteDatabase = dbHelper.getWritableDatabase();
String sql = "insert into tb_diary(title,// null);
// cursor.moveToFirst();
// count=cursor.getLong(0);
// return count;
// }
}
package cn.bzu.mydiary.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper{
private static String DATABASE_NAME="diary.db";
private static int DATABASE_VERSION=1;
public DBHelper(Context context) {
super(context,int newVersion) {
}
}
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|