一.设计思路

首先需要将XML文件进行解析,获取所需要的信息。主要是利用数据存储SQLite。把数据存储到数据库中,然后对其进行增删改查操作,对应日记本中的添加日记、删除日记、修改日记。基本功能实现后,对界面进行进一步的美化。

1.使用SQLiteOpenHelper(抽象类)来完成数据库的创建;

2.定义Diary的实体类与数据库访问类DiaryDao类,完成添加、删除、更新、按id查找、查找所有日记及日记总数的方法;

3.编写单元测试类并搭建单元测试的环境;

4.创建多个AndroidActivity和布局文件分别来实现对日记列表的显示、添加日记、修改日记、删除日记功能的布局和功能的实现;

5最后,添加闪屏效果,对所有界面进行美化。

二.开发过程用到的技术

1.在进行数据存储访问时使用SQLite的存储方式。

2. Android UI布局技术

主要运用控件:TabHost、EditText、Dialog、ImageView、ListView等

3.动画效果
   设置切入动画:setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.animation)),通过注册监听事件来实现动画效果;
4. Intent页面跳转技术

Intent intent = new Intent(startActivity.this,endActivity.class);

5.项目闪屏效果

运用AlphaAnimation类通过设定其Alpha值实现渐变的动画效果,通过设定播

放时间控制动画的播放,通过注册事件监听控制当动画播放完毕自动跳转到主界

面。

6.ListView的判空效果

当ListView中为空时通过图片提示,提示效果明显 。

在布局文件中要手动添加<ListView android:id=”@+id/listview”>

<ImageView android:id=”@+id/empty”>

在Activity中

ListViewlist=(ListView)findViewById(R.id.listview);

ImageViewempty=(ImageView)findViewById(R.id.empty);

Listview.setEmptyView(empty);

三.各个界面布局的实现

1.闪屏界面的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".WelcomActivity"
android:background="@drawable/welcomm" >
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/welcomimageView"
android:layout_centerHorizontal="true" />
<ImageView
android:id="@+id/welcomimageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="82dp"
android:src="@drawable/baby" />
<TextView
android:id="@+id/welcomtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignTop="@+id/welcomimageView"
android:layout_marginTop="21dp"
android:text="生活每天 都是新的!"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#F9F900" />
</RelativeLayout>

2.登陆界面的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/djhfj"
android:orientation="vertical"
tools:context=".LoginActivity" >
<TextView
android:id="@+id/denglu"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/fl_top_title_bg"
android:gravity="center"
android:text="登陆"
android:textColor="#ffffff"
android:textSize="20sp" />
<EditText
android:id="@+id/pasEdite"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="欢迎使用,请输入密码!"
android:password="true" />
<Button
android:id="@+id/denglu_button"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:background="@drawable/girl"
android:text="登陆" />
</LinearLayout>

3.日记列表的界面

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/login"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:id="@+id/biaoti"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:background="#8EE5EE"
android:gravity="center"
android:text="我的生活记录"
android:textSize="20dip" />
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ListView>
<ImageView
android:id="@+id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/warnnn"
android:layout_gravity="center"/>
</LinearLayout>

4.日记编辑界面

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/fgkljg"
tools:context=".ContentRActivity" >
<TextView
android:id="@+id/biaoti"
android:layout_height="40dip"
android:layout_width="fill_parent"
android:gravity="center"
android:background="#8EE5EE"
android:textSize="20dip"
android:text="我的生活记录"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<TextView
android:id="@+id/Atitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="标题"
android:textSize="20sp" />
<EditText
android:id="@+id/etitle"
android:layout_height="wrap_content"
android:layout_width="150dp"
android:inputType="text"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="内容"
android:textSize="20sp" />
<EditText
android:id="@+id/econtent"
android:layout_height="100dip"
android:layout_width="150dp"
android:inputType="text"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center"
>
<Button android:id="@+id/editbutton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="更新"/>
<Button android:id="@+id/canclebutton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="删除"/>
<Button android:id="@+id/returnbutton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="返回"/>
</LinearLayout>
</LinearLayout>

四.具体实现

1.日记的实体类

package org.sql.entity;
public class Diary {
//最好与数据库中字段值一一对应
private Integer id;
private String content;
private String title;
private String createtime;
public Diary() {
super();
}
public Diary(String content, String title, String createtime) {
super();
this.content = content;
this.title = title;
this.createtime = createtime;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public String toString(){
return "Disry[title:"+title+",content:"+content+",createtime:"+createtime+"]";
}
}

2.DbHelper类

package org.sql.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DbHelper extends SQLiteOpenHelper {
private static final String sql_NAME="mydb";
private static final int sql_Version=1;
public DbHelper(Context context) {
super(context, sql_NAME, null, sql_Version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table diary(id integer primary key autoincrement,title varchar(20),content varchar(1000),createtime)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}

3.对数据库中的数据实现增删改查

package org.sql.Dao;
import java.util.ArrayList;
import java.util.List;
import org.sql.db.DbHelper;
import org.sql.entity.Diary;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class DiaryDao {
private Integer a;
private DbHelper dbhelper;
public DiaryDao(Context context){
dbhelper=new DbHelper(context);
}
public ArrayList<Integer> selectid(){
ArrayList<Integer> ids=new ArrayList<Integer>();
SQLiteDatabase db=dbhelper.getWritableDatabase();
String sql="select id from diary";
db.execSQL(sql);
Cursor cursor=db.rawQuery(sql, null);
while(cursor.moveToNext()){
a++;
ids.add(a);
}
return ids;
}
//插入数据
public void save(Diary diary){
SQLiteDatabase db=dbhelper.getWritableDatabase();
String sql="insert into diary(title,content,createtime)values(?,?,?)";
db.execSQL(sql, new String[]{diary.getTitle(),diary.getContent(),diary.getCreatetime()});
}
//查找数据
public List<Diary> getAllDiaries(){
List<Diary> diaries=new ArrayList<Diary>();
SQLiteDatabase db=dbhelper.getReadableDatabase();
String sql="select * from diary";
Cursor cursor=db.rawQuery(sql, null);
while(cursor.moveToNext()){
//Integer id=cursor.getInt(cursor.getColumnIndex("id"));
String title=cursor.getString(cursor.getColumnIndex("title"));
String content=cursor.getString(cursor.getColumnIndex("content"));
String createtime=cursor.getString(cursor.getColumnIndex("createtime"));
Diary diary=new Diary(content, title, createtime);
diaries.add(diary);
}
return diaries;
}
//删除数据
public void deleteDiary(Integer id){
SQLiteDatabase db=dbhelper.getWritableDatabase();
String sql="delete from diary where id=?";
db.execSQL(sql,new Object[]{id});
}
//更新数据
public void updateDiary(Diary diary){
SQLiteDatabase db=dbhelper.getWritableDatabase();
String sql="update diary set title=?,content=?,createtime=? where id=?";
db.execSQL(sql, new Object[]{diary.getTitle(),diary.getContent(),diary.getCreatetime(),diary.getId()});
}
public long count() {
long count=0;
SQLiteDatabase db=dbhelper.getReadableDatabase();
Cursor cursor=db.rawQuery("select count(*) from diary ",null);
cursor.moveToFirst();
count=cursor.getLong(0);
return count;
}
//根据id查询数据
public Diary find(Integer id){
Diary diary = null;
SQLiteDatabase db=dbhelper.getReadableDatabase();
String sql="select * from diary where id=?";
Cursor cursor=db.rawQuery(sql, new String[]{id.toString()});
if(cursor.moveToFirst()){
Integer Id=cursor.getInt(cursor.getColumnIndex("id"));
String title=cursor.getString(cursor.getColumnIndex("title"));
String content=cursor.getString(cursor.getColumnIndex("content"));
String createtime=cursor.getString(cursor.getColumnIndex("createtime"));
diary=new Diary(content, title, createtime);
diary.setId(Id);
}
return diary;
}
public Diary findtitle(String title){
Diary diary = null;
SQLiteDatabase db=dbhelper.getReadableDatabase();
String sql="select * from diary where title=?";
Cursor cursor=db.rawQuery(sql, new String[]{title});
if(cursor.moveToFirst()){
Integer id=cursor.getInt(cursor.getColumnIndex("id"));
String Title=cursor.getString(cursor.getColumnIndex("title"));
String content=cursor.getString(cursor.getColumnIndex("content"));
String createtime=cursor.getString(cursor.getColumnIndex("createtime"));
diary=new Diary(content, Title, createtime);
diary.setId(id);
}
return diary;
}
}

4.进行单元测试的方法

package org.sql.sqlTest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.sql.Dao.DiaryDao;
import org.sql.entity.Diary;
import android.test.AndroidTestCase;
public class DiaryDaoTest extends AndroidTestCase {
//插入
public void testSave(){
DiaryDao diaryDao=new DiaryDao(getContext());
Diary diary=new Diary("我是破坏王", "配音谢娜", getcurrentTime());
diaryDao.save(diary);
diary=new Diary("迪斯尼乐园米老鼠与唐老鸭", "最爱", getcurrentTime());
diaryDao.save(diary);
diary=new Diary("致我们终将逝去的青春","《致青春》,导演赵薇",getcurrentTime());
diaryDao.save(diary);
diary=new Diary("5.26,是他们演唱的最后一场《MAMA》。虽说等新专等了很久,但还是忘不了那首曾经陪我们一年多的歌。到时候会不会有很多人忘记这首歌,原因是听了很久。我不敢保证。或许多年以后,许多行星饭就只听新歌,忘...... ", "鹿晗", getcurrentTime());
diaryDao.save(diary);
}
//查找
public void testgetAllDiaries(){
DiaryDao diaryDao=new DiaryDao(getContext());
List<Diary> diaries=diaryDao.getAllDiaries();
System.out.println(diaries);
}
public void testdelate(){
DiaryDao diaryDao=new DiaryDao(getContext());
diaryDao.deleteDiary(2);
}
public String getcurrentTime(){
SimpleDateFormat format= new SimpleDateFormat("yyyy年MM月dd日 hh:MM:ss");
return format.format(new Date());
}
//更新
public void testUpdate(){
DiaryDao diaryDao=new DiaryDao(getContext());
Diary diary=new Diary("我是米你", "迪斯尼乐园", getcurrentTime());
diary.setId(1);
diaryDao.updateDiary(diary);
}
//根据id查找数据测试
public void testFind(){
DiaryDao diaryDao=new DiaryDao(getContext());
Diary diary=diaryDao.find(1);
System.out.println(diary.getId());
}
public void testFindtitle(){
DiaryDao diaryDao=new DiaryDao(getContext());
Diary diary=diaryDao.findtitle("配音谢娜");
System.out.println(diary.getId());
}
}

5.各个页面中具体功能的实现

MainActivity页面:
package com.example.sqlist;
import org.sql.Dao.DiaryDao;
import android.os.Bundle;
import android.app.TabActivity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.TabHost;
public class MainActivity extends TabActivity {
private TabHost tabhost;
DiaryDao diaryService ;
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.activity_main);
tabhost=getTabHost();
tabhost.addTab(buildTabSpec("TAB1", R.string.mydiarylist,
R.drawable.kieert, new Intent(MainActivity.this,
DiarylistActivity.class)));
tabhost.addTab(buildTabSpec("TAB2", R.string.writemydiary,
R.drawable.kitty, new Intent(MainActivity.this,
WriteDiaryActivity.class)));
tabhost.addTab(buildTabSpec("TAB3", R.string.finddiary,
R.drawable.kittyy, new Intent(MainActivity.this,
FindDiaryActivity.class)));
tabhost.addTab(buildTabSpec("TAB4", R.string.exit,
R.drawable.kuii, new Intent(MainActivity.this,
ExitActivity.class)));
}
private TabHost.TabSpec buildTabSpec(String tag, int realLable,
int realIcon, Intent content) {
return this.tabhost
.newTabSpec(tag)
.setIndicator(getString(realLable),
getResources().getDrawable(realIcon))
.setContent(content);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.mydiarylist:
intent=new Intent();
intent.setClass(MainActivity.this, DiarylistActivity.class);
startActivity(intent);
finish();
break;
case R.id.writediary:
intent=new Intent();
intent.setClass(MainActivity.this, WriteDiaryActivity.class);
startActivity(intent);
finish();
break;
default:
break;
}
// TODO Auto-generated method stub
return super.onOptionsItemSelected(item);
}
}
DiarylistActivity页面:
package com.example.sqlist;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.sql.Dao.DiaryDao;
import org.sql.entity.Diary;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class DiarylistActivity extends Activity {
private ListView listview;
private ImageView empty;
DiaryDao diarydao;
private Animation animation;
private TextView biaoti;
Diary diary;
int ID;
// List<Map<String,Object>> data;
// Diary diary;
// int ID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_diarylist);
prepare();
animation = AnimationUtils.loadAnimation(DiarylistActivity.this,
R.anim.animation);
biaoti.setAnimation(animation);
// 提供适配器
// 点击列表的事件处理
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@SuppressWarnings("unchecked")
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
DiaryDao diaryDao = new DiaryDao(DiarylistActivity.this);
listview = (ListView) parent;
@SuppressWarnings("unchecked")
Map<String, Object> item = (Map<String, Object>) listview
.getItemAtPosition(position);
String title = (String) item.get("title");
// System.out.println(title);
diary = diaryDao.findtitle(title);
intent();
}
});
}
public void intent(){
Intent intent = new Intent();
intent.setClass(DiarylistActivity.this, ContentRActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("id", diary.getId());
intent.putExtras(bundle);
startActivity(intent);
finish();
}
public void prepare() {
// 查询数据
diarydao = new DiaryDao(this);
List<Diary> diaries = diarydao.getAllDiaries();
// 查找控件
empty = (ImageView) findViewById(R.id.empty);
listview = (ListView) findViewById(R.id.listview);
biaoti = (TextView) findViewById(R.id.biaoti);
listview.setEmptyView(empty);
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
for (Diary diary : diaries) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", diary.getTitle());
map.put("content", diary.getContent());
map.put("create", diary.getCreatetime());
data.add(map);
SimpleAdapter adapter = new SimpleAdapter(this, data,
R.layout.items, new String[] { "title", "create" },
new int[] { R.id.title, R.id.create });
listview.setAdapter(adapter);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.diarylist, menu);
return true;
}
}
ContentRActivity页面:
package com.example.sqlist;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.sql.Dao.DiaryDao;
import org.sql.Data.CurrentData;
import org.sql.entity.Diary;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Animation.AnimationListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class ContentRActivity extends Activity {
private EditText Etitle, Econtent;
private Button editbutton, delatebutton,returnbutton;
private String title;
private String content;
private String createtime;
private Animation animation;
private TextView biaoti;
DiaryDao diarydao;
Diary diary ;
private int id;
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content_r);
Etitle = (EditText) findViewById(R.id.etitle);
Econtent = (EditText) findViewById(R.id.econtent);
editbutton = (Button) findViewById(R.id.editbutton);
delatebutton = (Button) findViewById(R.id.canclebutton);
returnbutton = (Button) findViewById(R.id.returnbutton);
biaoti=(TextView) findViewById(R.id.biaoti);
animation=AnimationUtils.loadAnimation(ContentRActivity.this, R.anim.animation);
biaoti.setAnimation(animation);
intent = getIntent();
Bundle bundle = intent.getExtras();
id = bundle.getInt("id");
diarydao = new DiaryDao(this);
diary = diarydao.find(id);
title = diary.getTitle();
content = diary.getContent();
Etitle.setText(title);
Econtent.setText(content);
editbutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
//DiaryDao diaryDao=new DiaryDao(ContentRActivity.this);
v.startAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
//DiaryDao diaryDao=new DiaryDao(ContentRActivity.this);
title=Etitle.getText().toString();
content=Econtent.getText().toString();
Diary diary=new Diary(content,title,CurrentData.getCurrentTime());
diary.setId(id);
diarydao.updateDiary(diary);
intent=new Intent();
intent.setClass(ContentRActivity.this, DiarylistActivity.class);
Bundle bundle=new Bundle();
bundle.putInt("id", id);
intent.putExtras(bundle);
startActivity(intent);
}
});
// TODO Auto-generated method stub
}
});
returnbutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
v.startAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
intent=new Intent();
intent.setClass(ContentRActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
}
});
delatebutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
v.startAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
dialog();
}
});
}
});
}
public void dialog(){
final AlertDialog.Builder dialog=new AlertDialog.Builder(this);
dialog.setTitle("提示").setMessage("确定要删除该篇日记?").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
DiaryDao diaryDao=new DiaryDao(ContentRActivity.this);
diarydao.deleteDiary(id);
intent=new Intent();
intent.setClass(ContentRActivity.this, DiarylistActivity.class);
startActivity(intent);
Toast.makeText(ContentRActivity.this, "删除成功", Toast.LENGTH_LONG).show();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
AlertDialog dialog_alert=dialog.create();
dialog_alert.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.content, menu);
return true;
}
}
package com.example.sqlist;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.sql.Dao.DiaryDao;
import org.sql.Data.CurrentData;
import org.sql.entity.Diary;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Animation.AnimationListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class ContentRActivity extends Activity {
private EditText Etitle, Econtent;
private Button editbutton, delatebutton,returnbutton;
private String title;
private String content;
private String createtime;
private Animation animation;
private TextView biaoti;
DiaryDao diarydao;
Diary diary ;
private int id;
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content_r);
Etitle = (EditText) findViewById(R.id.etitle);
Econtent = (EditText) findViewById(R.id.econtent);
editbutton = (Button) findViewById(R.id.editbutton);
delatebutton = (Button) findViewById(R.id.canclebutton);
returnbutton = (Button) findViewById(R.id.returnbutton);
biaoti=(TextView) findViewById(R.id.biaoti);
animation=AnimationUtils.loadAnimation(ContentRActivity.this, R.anim.animation);
biaoti.setAnimation(animation);
intent = getIntent();
Bundle bundle = intent.getExtras();
id = bundle.getInt("id");
diarydao = new DiaryDao(this);
diary = diarydao.find(id);
title = diary.getTitle();
content = diary.getContent();
Etitle.setText(title);
Econtent.setText(content);
editbutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
//DiaryDao diaryDao=new DiaryDao(ContentRActivity.this);
v.startAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
//DiaryDao diaryDao=new DiaryDao(ContentRActivity.this);
title=Etitle.getText().toString();
content=Econtent.getText().toString();
Diary diary=new Diary(content,title,CurrentData.getCurrentTime());
diary.setId(id);
diarydao.updateDiary(diary);
intent=new Intent();
intent.setClass(ContentRActivity.this, DiarylistActivity.class);
Bundle bundle=new Bundle();
bundle.putInt("id", id);
intent.putExtras(bundle);
startActivity(intent);
}
});
// TODO Auto-generated method stub
}
});
returnbutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
v.startAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
intent=new Intent();
intent.setClass(ContentRActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
}
});
delatebutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
v.startAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
dialog();
}
});
}
});
}
public void dialog(){
final AlertDialog.Builder dialog=new AlertDialog.Builder(this);
dialog.setTitle("提示").setMessage("确定要删除该篇日记?").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
DiaryDao diaryDao=new DiaryDao(ContentRActivity.this);
diarydao.deleteDiary(id);
intent=new Intent();
intent.setClass(ContentRActivity.this, DiarylistActivity.class);
startActivity(intent);
Toast.makeText(ContentRActivity.this, "删除成功", Toast.LENGTH_LONG).show();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
AlertDialog dialog_alert=dialog.create();
dialog_alert.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.content, menu);
return true;
}
}

五.运行效果

个人日记开发最终实现相关推荐

  1. 为什么云开发最终将成为编程新标准?

    云开发是一个已经存在了很多年的概念,但在过去未能真正成为主流. 然而,由于云和软件即服务的宏观趋势的结合,以及技术的进步,如容器技术 Docker 和 Kubernetes,云开发现在有机会最终成为基 ...

  2. DM3730学习日记-开发环境

    我在搭建的时候,是参考了这两个帖子的: http://zjbintsystem.blog.51cto.com/964211/1108225/ http://blog.csdn.net/luojiadr ...

  3. 支付宝收费后跳转html代码,PC端支付宝开发最终的页面跳转问题

    支付宝支付一般是请求接口后收到一组form表单代码,在h5中,可以直接像下面这样直接使用 doPayAlipay(alipayNeedParams).then(resAlipay=>{ if(r ...

  4. 我的日记本开发手记(4)—— UI效果图

    前面我已经对配色和布局进行了出版规划,现在是真正动手的时候了,开始漂亮的皮囊设计之旅吧!工欲善其事,必先利其器,我选择的工具是大名鼎鼎的Adobe公司开发的Photoshop软件,版本为Adobe P ...

  5. 第10节_我的日记本开发手记(10)——使用自定义图标字体

    各位朋友大家好,这小结我们主要实现绘制自己的图标字体,像使用字体那样使用我们的小图标,不但可以调整大小,而且可以调整颜色,下看一下最终效果,最终效果如图1所示. 一.FontCreatorPortab ...

  6. .NET Core微服务开发选项

    微服务开发的关注点有哪些? 微服务构最终的目标是实现业务的价值,交付,为了让开发人员更加关注业务开发和交付,微服务需要一些比较底层的基础设置,我们也称为微服务公共关注点. 配置管理:对微服务可变参数进 ...

  7. 一、服务端开发基础(搭建Web服务器、网络基础概念、请求响应流程、配置Apache、静态网站与动态网站)

    一.建立你的第一个网站(目标) 前端开发 最终还是属于 Web 开发 中的一个分支,想要成为一名合格的前端开发人员,就必须要 充分理解Web 的概念. 构建一个专业的网站是一项巨大的工作!对于新手我们 ...

  8. 软件开发作为一种价值领域的研究

    免责声明 本文是我对软件开发本质的个人看法.这并不是要成为科学论文,因此,许多陈述是故意加粗和直接的,以使文章简短.我尽力根据自己的观察和可用的资料来介绍软件开发的性质,但是我不是商业理论家.科学哲学 ...

  9. mysql跳过安全_几年了,作为一个码农终于把MySQL日记看懂了!

    一.写作背景 大家都清楚,日志是 MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息.MySQL日志主要包括错误日志.查询日志.慢查询日志.二进制日志(binlog)和事务日志(redo ...

最新文章

  1. 安装VMware-workstation-full-14.1.1-7528167 附带下载地址
  2. 深度剖析Kubernetes API Server三部曲 - part 1
  3. php e all e notic,error_reporting(E_ALL ^ E_NOTICE)详细说明 | 慢生活的记忆
  4. 校友会2019中国大学计算机,校友会2019中国计算机类一流专业排名,清华大学排名第一...
  5. 战双帕弥什自抽号怎么使用_战双帕弥什新S冰露怎么玩《战双帕弥什》新S冰露玩法技巧...
  6. [Android 新特性] 有史来最大改变 Android 5.0十大新特性
  7. SilverLight4导航
  8. qqkey获取原理_qqkey获取器下载
  9. ODAC的tnsnames.ora文件
  10. 关于51芯片及引脚功能介绍与总结
  11. 光耦重要参数与常用设计注意事项
  12. 大学生数学竞赛试题荟萃
  13. 苹果前置摄像头拍出来是反的怎么调_苹果前置摄像头拍照是反的怎么办
  14. VM虚拟机安装win7系统
  15. 淘宝关键字搜索商品-v1
  16. 奥特曼系列ol以前的服务器恢复,奥特曼系列ol怎么看之前登录过的大区
  17. CentOS7重启指令(重启命令)reboot、shutdown -r now
  18. springboot 启动报错:required a bean of type 'xxxRepository' that could not be found
  19. python3.x 基础五:模块
  20. SimScape热模块学习笔记

热门文章

  1. ISO22000认证|企业申请ISO22000认证资料自查
  2. 学习opengl官方指南 01 opengl介绍
  3. 编译原理chatpter04 文法的形式和文法的类型
  4. Java支付宝当面付demo实例配置沙箱
  5. maven私服资源的上传与下载
  6. 怎么权衡不同类型项目的收益产出比 ROI?
  7. 微信客服消息跳转h5,回复关键字,跳转小程序方式全集
  8. Android事件传递简单分析
  9. MMDetection(三):公开数据集上测试和训练模型
  10. java登录密码错误锁定账号