android个人日记本

1.创建DBOpenHelper类,用于数据库的创建以及更新


public class DBOpenHelper extends SQLiteOpenHelper {

	private static final String DB_NAME = "diary.db";
	private static final int DB_VERSION = 1;

	public DBOpenHelper(Context context) {
		// 第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,如果设置为null,代表使用系统默认的工厂类
		// 从数据库中查询出来的结果是需要通过这个游标进行访问的
		super(context, DB_NAME, null, DB_VERSION);
	}

	/**
	 * 数据库第一次被创建出来的时候才会被调用,只会调用1次 完成数据库中表的创建 SQLiteDatabase类主要是为了操作数据库的
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table diary(_id integer primary key autoincrement,title varchar(20),content varchar(1000),createtime)");
	}

	/**
	 * 数据库的版本发生改变的时候,一般是在软件升级的时候会调用
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

	}

2.创建日记实体类

public class Diary {
	private Integer id;
	private String title;
	private String content;
	private String createtime;
	public Diary(String title, String content, String createtime) {
		super();
		this.title = title;
		this.content = content;
		this.createtime = createtime;
	}
	public Diary() {
		super();
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer 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 getCreatetime() {
		return createtime;
	}
	public void setCreatetime(String createtime) {
		this.createtime = createtime;
	}
	@Override
	public String toString() {
		return "Diary [id=" + id + ", title=" + title + ", content=" + content
				+ ", createtime=" + createtime + "]";
	}

3.创建dao层,用于CRUD操作


  
   /**
    * 根据id查找日记
    * @param id
    * @return
    */
   public Diary getDiaryById(Integer id){
	   Diary diary=null;
	   db=dbOpenHelper.getReadableDatabase();
	   Cursor cursor=db.query("diary", null, "_id=?", new String[]{id.toString()},null, null, null);
	   if(cursor!=null){
		   if(cursor.moveToFirst()){
			   String title=cursor.getString(cursor.getColumnIndex("title"));
			   String content=cursor.getString(cursor.getColumnIndex("content"));
			   String createtime=cursor.getString(cursor.getColumnIndex("createtime"));
			   diary=new Diary(title,content,createtime);
			   diary.setId(id);
		   }
	   }
	   return diary;
   }
   /**
    * 根据id删除日记
    * @param id
    */
   public void delete(Integer id){
	   db=dbOpenHelper.getWritableDatabase();
	   db.delete("diary", "_id=?", new String[]{id.toString()});
   }
   /**
    * 计算日记数量
    * @return
    */
   public long count(){
	   long count=0;
	   db=dbOpenHelper.getReadableDatabase();
	   Cursor cursor=db.query("diary", new String[]{"count(*)"}, null, null, null, null, null);
	   if(cursor.moveToFirst()){
		   count=cursor.getLong(0);
	   }
	   return count;
   }
   
   public String getCurrentTime() {
 		SimpleDateFormat format = new SimpleDateFormat(
 				"yyyy年MM月dd日 hh:mm:ss");
 		String date = format.format(new Date());
 		return date;
 	}

4.程序主界面(采用选项卡的方式)

      

		TabHost tabHost = getTabHost();
		Resources r = getResources();
		LayoutInflater.from(this).inflate(R.layout.activity_main,
				tabHost.getTabContentView(), true);
		
		TabHost.TabSpec tab1 = tabHost.newTabSpec("tab01")
				.setIndicator("新建日记")
				.setContent(new Intent(this,Diary_New.class));
		TabHost.TabSpec tab2 = tabHost.newTabSpec("tab02")
				.setIndicator("查看日志")
				.setContent(new Intent(this,Diary_List.class));
		tabHost.addTab(tab1);
		tabHost.addTab(tab2);
	}

5.日记列表界面(调用生命周期实现切换更新)

     java代码:


	private ListView listView;
	private TextView textView;
	private DiaryDao diaryDao;
	private List<Map<String, Object>> data;
	private int id;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_diary__list);
		diaryDao=new DiaryDao(Diary_List.this);
		listView=(ListView) findViewById(R.id.listview);
		textView=(TextView) findViewById(R.id.empty); 
		listView.setEmptyView(textView);
		prepareData();
	//实现单击查看日记功能	
		listView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int position,
					long arg3) {
				Map<String,Object> item=data.get(position);
				
				String concent=(String) item.get("concent");
				String title=(String) item.get("title");
				Intent intent = new Intent();
				intent.setClass(Diary_List.this, Diary_Show.class);
				Bundle bundle = new Bundle();
				
				bundle.putString("title",title );
				bundle.putString("concent", concent);
				intent.putExtras(bundle);
				
				startActivity(intent);
				
			}
		});

                    //实现长按编辑删除

                   listView.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
					int position, long arg3) {
				Map<String,Object> item=data.get(position);
				
				
				String title=(String) item.get("title");
				System.out.println(title);
				 id=(Integer) item.get("id");
				 System.out.println("id="+id);
				 System.out.println("位置="+arg3);
				 
				 
				 
				 
				 AlertDialog.Builder builder=new Builder(Diary_List.this);
				 builder.setTitle("修改删除");
				  
				  builder.setNegativeButton("修改", new OnClickListener() {
					
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Intent intent = new Intent();
						intent.setClass(Diary_List.this, Diary_Edit.class);
						Bundle bundle = new Bundle();
						bundle.putInt("id", id);
						intent.putExtras(bundle);
						startActivity(intent);
					}
				});
				  
				  builder.setPositiveButton("删除", new OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						diaryDao.delete(id);
						prepareData();
						
					}
				});
				 
				  builder.show();
				return true;
			}
		});

		
	}
	public void prepareData() {
		data = new ArrayList<Map<String, Object>>();
		diaryDao = new DiaryDao(this);
		List<Diary> diaries = diaryDao.getAllDiaries();
		
		for (Diary diary : diaries) {
			Map<String, Object> item = new HashMap<String, Object>();
			item.put("title", diary.getTitle());
			item.put("createtime", diary.getCreatetime());
			item.put("id", diary.getId());
			item.put("concent",diary.getContent());
			data.add(item);
		}
		SimpleAdapter simpleAdapter = new SimpleAdapter(this, data,
				R.layout.diary_list_item, new String[] { "title", "createtime" },
				new int[] { R.id.title, R.id.createtime });
		listView.setAdapter(simpleAdapter);
		
	}


	public void onRestart(){
		super.onRestart();
		prepareData();
	}
	public void onResume() {
		super.onResume();
		prepareData();
	}

生命周期调用

public void onRestart(){
		super.onRestart();
		prepareData();
	}
	public void onResume() {
		super.onResume();
		prepareData();
	}

6.新建日记

private EditText title,content;
	private DiaryDao diaryDao;
	private Diary diary;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_diary__new);
		title=(EditText) findViewById(R.id.title);
		content=(EditText) findViewById(R.id.content);
	}
	public void addDiary(View v) {
		String t=title.getText().toString();
		String c=content.getText().toString();
		diaryDao=new DiaryDao(Diary_New.this);
		diary=new Diary(t,c,diaryDao.getCurrentTime());
		diaryDao.save(diary);
		title.setText("");
		content.setText("");
		Toast.makeText(Diary_New.this,"添加日记成功", Toast.LENGTH_SHORT).show();
		
	}

7.编辑日记

public class Diary_Edit extends Activity {
	private EditText EDtitle,EDcontent;
	private DiaryDao diaryDao;
	private Diary diary_old,diary_new;
	private String createtime;
	private int id;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_diary__edit);
	//获取控件
		EDtitle=(EditText) findViewById(R.id.edtitle);
		EDcontent=(EditText) findViewById(R.id.edcontent);
	//接收来自日记列表是数据
		Intent intent=getIntent();
		Bundle bundle=intent.getExtras();

		 id=bundle.getInt("id");

		diary_old=new Diary();
		diaryDao=new DiaryDao(Diary_Edit.this);	
		diary_old=diaryDao.getDiaryById(id);
		System.out.println(diary_old);
		
		String title=diary_old.getTitle();
		String content=diary_old.getContent();
		
		createtime=diary_old.getCreatetime();
		EDtitle.setText(title);
		EDcontent.setText(content);
	}
	
	public void editDiary(View v) {
		diaryDao=new DiaryDao(Diary_Edit.this);
		String title_new=EDtitle.getText().toString();
		String content_new=EDcontent.getText().toString();
		diary_new=new Diary(title_new,content_new,createtime);
		diary_new.setId(id);
		diaryDao.update(diary_new);
		Toast.makeText(Diary_Edit.this, "修改成功", Toast.LENGTH_LONG).show();
		this.finish();
		
	}

8.单击查看日记

public class Diary_Show extends Activity {
	
	private TextView title,concent;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_diary__show);
		
		title=(TextView) findViewById(R.id.swtitle);
		concent=(TextView) findViewById(R.id.swcontent);
		
		Intent intent=getIntent();
		Bundle bundle=intent.getExtras();
		String title1=bundle.getString("title");
		String concent1=bundle.getString("concent");
		
		System.out.println(title1);
		System.out.println(concent1);
		
		title.setText(title1);
		concent.setText(concent1);
	}

0.关于栈的问题

  日记本主界面一直位于栈底,每次操作都要压栈,所以每次操作(查看、修改)之后都要出栈(finish掉当前activity),而不仅仅是完成对主界面的跳转。由于主界面一直位于栈底,所以完成操作之后只需finish()当前activity即可。





  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仲少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值