个人日记开发最终实现
来源:互联网 发布:佛教闭关可以有网络吗 编辑:程序博客网 时间:2024/05/22 02:15
一.设计思路
首先需要将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; }}
五.运行效果
- 个人日记开发最终实现
- 个人日记
- 个人日记
- 个人日记
- 个人日记
- 个人日记
- 个人日记
- 个人日记
- 个人日记
- 个人日记
- 个人日记
- 个人日记
- 个人日记
- 【个人日记】
- 个人日记
- 个人日记
- 软件开发最终归宿
- 开发完成端口服务器过程中,实现post两次完成调用的问题和最终解决
- flex中使用设备和嵌入字体
- 笔记3:透视投影变换(perspective projection)
- 旧题再做涨工资
- Android AsyncTask异步线程
- sqlite admin提示cannot perform this operation on a closed dataset
- 个人日记开发最终实现
- linux 在64位安装memcached问题解决
- 块设备驱动实战基础篇二 (继续完善170行过滤驱动代码至200行)
- 【下载加速吧】分享幸福!巧用影音制作工具做影片
- 编译原理三大经典书籍
- Debian 7 源(32/64bit)好用的源
- 第十六周
- C函数获取IP地址
- Android 屏幕截图