Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 記事本程序源碼

android 記事本程序源碼

編輯:關於Android編程

應用實現密碼登陸,記事本內容可增刪改除等操作,用listview顯示每次保存的記事內容,實現了記事本的基本功能。代碼都有詳細注解。

1、代碼的目錄

\\

密碼登陸使用的是sharedpreferences記錄輸入的密碼,sharedPreferences簡單介紹

 

做軟件開發應該都知道,很多軟件會有配置文件,裡面存放這程序運行當中的各個屬性值,由於其配置信息並不多,如果采用數據庫來存放並不劃算,因為數據庫連接跟操作等耗時大大影響了程序的效率,因此我們使用鍵值這種一一對應的關系來存放這些配置信息。SharedPreferences正是Android中用於實現這中存儲方式的技術。

SharedPreferences的使用非常簡單,能夠輕松的存放數據和讀取數據。SharedPreferences只能保存簡單類型的數據,例如,String、int等。一般會將復雜類型的數據轉換成Base64編碼,然後將轉換後的數據以字符串的形式保存在XML文件中,再用SharedPreferences保存。

使用SharedPreferences保存key-value對的步驟如下:

  (1)使用Activity類的getSharedPreferences方法獲得SharedPreferences對象,其中存儲key-value的文件的名稱由getSharedPreferences方法的第一個參數指定。

  (2)使用SharedPreferences接口的edit獲得SharedPreferences.Editor對象。

  (3)通過SharedPreferences.Editor接口的putXxx方法保存key-value對。其中Xxx表示不同的數據類型。例如:字符串類型的value需要用putString方法。

  (4)通過SharedPreferences.Editor接口的commit方法保存key-value對。commit方法相當於數據庫事務中的提交(commit)操作。

 

//對密碼進行判斷如果任意一個為空就繼續執行
			 if((num.equals(""))||(num.equals(""))||(num.equals(""))||(num.equals(""))||(num.equals(""))){	
		         SharedPreferences preferences=getSharedPreferences("softinfo",Context.MODE_WORLD_READABLE);   
		         Editor edit=preferences.edit(); 
				 Button btn1 = (Button) v; 
		         String input1 = btn1.getText().toString(); 
		         editNum[number1].setText(input1);
		        // Toast.makeText(getApplication(),editNum[number1].getText().toString(), Toast.LENGTH_SHORT).show();
		        // display.setText(input);
		         number1++;			         	         
		         if(number1>4){
					 number1 = 0;
					 for(int i=0;i<10;i++){
						 btnNum[i].setEnabled(false);
					 }
					
				 }	 
		        // edit.clear().commit();
		          //第一次輸入數據保存到sharedpreference
		         edit.putString("editNum[0]", editNum[0].getText().toString());  
		         edit.putString("editNum[1]", editNum[1].getText().toString());
		         edit.putString("editNum[2]", editNum[2].getText().toString());
		         edit.putString("editNum[3]", editNum[3].getText().toString());
		         edit.putString("editNum[4]", editNum[4].getText().toString());
		         edit.commit();
		        // read();
		         if(number1 ==3){
		        	 Toast.makeText(getApplication(), "輸完後請再輸入一次密碼", Toast.LENGTH_SHORT).show();
		         }
			 }
完整登陸代碼:

 

 

package com.example.diary;

import java.util.regex.Pattern;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 首頁
 * @author xing
 *
 */
public class Login extends Activity implements OnClickListener {
	 Boolean flag;
		
	@SuppressWarnings("unused")
	private TextView display;
	 private Button c,clear,cancel,helplogin;
	 private Button[] btnNum = new Button[10];// 數值按鈕 
	 private EditText[] editNum = new EditText[5];// 數值按鈕 
	 int number = 0;
	 int number1 = 0;
	 int editnumber = 0;
	 String num="",num1="",num2="",num3="",num4="";//定義5個輸入密碼
	@Override  
    protected void onCreate(Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        super.onCreate(savedInstanceState);       
        setContentView(R.layout.login); 
       
        initUI();
       
	}
	/**
	 * 初始化UI
	 */
	private void initUI() {
		
		helplogin = (Button)findViewById(R.id.helplogin);
		helplogin.setOnClickListener(new helploginListener());
		
		c = (Button)findViewById(R.id.c);
		c.setOnClickListener(new cListener());
		
		clear = (Button)findViewById(R.id.clear);
		clear.setOnClickListener(new clearListener());
		
		cancel = (Button)findViewById(R.id.cancel);
		cancel.setOnClickListener(new cancelListener());
		
		display = (TextView)findViewById(R.id.display);
		
		editNum[0] = (EditText)findViewById(R.id.editone);		
		editNum[1] = (EditText)findViewById(R.id.edittwo);		
		editNum[2] = (EditText)findViewById(R.id.editthree);		
		editNum[3] = (EditText)findViewById(R.id.editfour);		
		editNum[4] = (EditText)findViewById(R.id.editfive);		
		
		// TODO Auto-generated method stub
		btnNum[0] = (Button)findViewById(R.id.one); 
        btnNum[1] = (Button)findViewById(R.id.two); 
        btnNum[2] = (Button)findViewById(R.id.three); 
        btnNum[3] = (Button)findViewById(R.id.four); 
        btnNum[4] = (Button)findViewById(R.id.five); 
        btnNum[5] = (Button)findViewById(R.id.six); 
        btnNum[6] = (Button)findViewById(R.id.seven); 
        btnNum[7] = (Button)findViewById(R.id.eight); 
        btnNum[8] = (Button)findViewById(R.id.nine); 
        btnNum[9] = (Button)findViewById(R.id.zero);  
        read();        
        //給全部按鈕添加監聽器
        for(int i=0;i<10;i++){
        	btnNum[i].setOnClickListener(this);
        }
//        handler.removeCallbacks(runnable);
//		handler.postDelayed(runnable,200);
	}
	//刷新線程,沒用,輸入一個密碼就會不能再輸入
	private Handler handler = new Handler();
	private Runnable runnable = new Runnable() {
         public void run () {
        	 read();
         handler.postDelayed(this,1000); 
      }
    };
	/**
	 * 所有數字控件的監聽器
	 */
	
	@SuppressWarnings("deprecation")
	public void onClick(View v) { 		     
	    //對密碼進行判斷如果任意一個為空就繼續執行
			 if((num.equals(""))||(num.equals(""))||(num.equals(""))||(num.equals(""))||(num.equals(""))){	
		         SharedPreferences preferences=getSharedPreferences("softinfo",Context.MODE_WORLD_READABLE);   
		         Editor edit=preferences.edit(); 
				 Button btn1 = (Button) v; 
		         String input1 = btn1.getText().toString(); 
		         editNum[number1].setText(input1);
		        // Toast.makeText(getApplication(),editNum[number1].getText().toString(), Toast.LENGTH_SHORT).show();
		        // display.setText(input);
		         number1++;			         	         
		         if(number1>4){
					 number1 = 0;
					 for(int i=0;i<10;i++){
						 btnNum[i].setEnabled(false);
					 }
					
				 }	 
		        // edit.clear().commit();
		          //第一次輸入數據保存到sharedpreference
		         edit.putString("editNum[0]", editNum[0].getText().toString());  
		         edit.putString("editNum[1]", editNum[1].getText().toString());
		         edit.putString("editNum[2]", editNum[2].getText().toString());
		         edit.putString("editNum[3]", editNum[3].getText().toString());
		         edit.putString("editNum[4]", editNum[4].getText().toString());
		         edit.commit();
		        // read();
		         if(number1 ==3){
		        	 Toast.makeText(getApplication(), "輸完後請再輸入一次密碼", Toast.LENGTH_SHORT).show();
		         }
			 }
			 
			 
			 //判斷輸入的密碼是否被記錄了,如果都有了就執行匹配,匹配對了就跳轉到firstpage頁面
		if(isNumeric(num)&&isNumeric(num1)&&isNumeric(num2)&&isNumeric(num3)&&isNumeric(num4)){					 
			 Button btn = (Button) v; 
	         String input = btn.getText().toString(); 
	         editNum[number].setText(input);
	       //判斷如果輸入密碼與首次輸入密碼相同則跳轉到firstFage
	        // display.setText(input);
	         if((num.equals(editNum[0].getText().toString()))&&(num1.equals(editNum[1].getText().toString()))&&(num2.equals(editNum[2].getText().toString()))
	        		&&(num3.equals(editNum[3].getText().toString()))&&(num4.equals(editNum[4].getText().toString()))){
		 
	        	 	Intent intent = new Intent(Login.this,Firstpage.class);
		        	startActivity(intent);
		     }
	        // display.setText(editNum[number].getText().toString());
	         editnumber++;
	        // Toast.makeText(getApplication(), editnumber, Toast.LENGTH_SHORT).show();
	         if(editnumber>4){
					editnumber=4;
					
				}
	         number++;			         	         
	         if(number>4){
				 number = 0;
				 //輸完密碼後設置控件為不可操作狀態
				 for(int i=0;i<10;i++){
					 btnNum[i].setEnabled(false);
				 }
				
			 }	
	         
	         //Toast.makeText(getApplication(),editNum[4].getText().toString()+":"+editNum[3].getText().toString()+":"+ editNum[2].getText().toString(), Toast.LENGTH_SHORT).show();
	         
		 }
	     
		 
	 }
	/**
	 * 判斷是否是0-9數字
	 * @param str
	 * @return pattern.matcher(str).matches()
	 */
	public static boolean isNumeric(String str){ 
	    Pattern pattern = Pattern.compile("[0-9]*"); 
	    return pattern.matcher(str).matches();    
	} 

	/**
	 * 幫助
	 * @author xing
	 *
	 */
	public class helploginListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			dialog();
		}
		
	}
	/**
	 * 幫助對話框
	 */
	protected void dialog() {
		  AlertDialog.Builder builder = new Builder(this);
		  builder.setMessage(R.string.helpcontent); 
		  builder.setIcon(R.drawable.ic_launcher);
		  builder.setTitle("溫馨提示"); 
		  builder.setPositiveButton("確認", new DialogInterface.OnClickListener() {   
			  public void onClick(DialogInterface dialog, int which) {
		   
		   }
		  }); 
		  builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {   
			  public void onClick(DialogInterface dialog, int which) {
			  
		   }
		  }); 
		  builder.create().show();
		}
	 
	 public class cListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
//			SharedPreferences sp = getSharedPreferences("loginUser", Context.MODE_PRIVATE);
//			Editor editor = sp.edit();  
//			editor.clear();  
//			editor.commit(); 
//			display.setText("");
			read();  
//			for(int i=0;i<5;i++){
//				editNum[i].setText("");				
//			}
			btnsetEnabled();
			
			number--;
			if(number<0){
				number=0;
			}
			editNum[editnumber].setText("");	
			//display.setText(editnumber+":"+number);
			editnumber--;
			if(editnumber<0){
				editnumber=0;
			}
			
		}
		 
	 }
	 /**
	  * 清空數據監聽器
	  * @author aeon
	  *
	  */
	 public class clearListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			for(int i=0;i<5;i++){
				editNum[i].setText("");				
			}
			btnsetEnabled();
			read(); 
			
		}
		 
	 }
	 /**
	  * 退出監聽器
	  * @author aeon
	  *
	  */
	 public class cancelListener implements OnClickListener{

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				finish();
			}
			 
		 }
	 /**
	  * 讀取sharedpreference數據
	  */
	 public void read(){
		  SharedPreferences ferences=getSharedPreferences("softinfo",0);  
          num=ferences.getString("editNum[0]", "");  
          num1=ferences.getString("editNum[1]", ""); 
          num2=ferences.getString("editNum[2]", ""); 
          num3=ferences.getString("editNum[3]", ""); 
          num4=ferences.getString("editNum[4]", ""); 
        //  display.setText(num+num1+num2+num3+num4);
//          if((num.equals(""))||(num.equals(""))||(num.equals(""))||(num.equals(""))||(num.equals(""))){
//        	  flag = true;
//        	  Toast.makeText(getApplication(), "輸完後請再輸入一次密碼", Toast.LENGTH_SHORT).show();
//          }else{
//        	  flag = false;       	  
//          }
	 }
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		for(int i=0;i<10;i++){
			 btnNum[i].setEnabled(true);
		 }
		handler.removeCallbacks(runnable);//停止定時器
		super.onDestroy();
		
	}
	/**
	 * 設置控件可操作
	 */
	public void btnsetEnabled(){
		for(int i=0;i<10;i++){
			 btnNum[i].setEnabled(true);
		 }	
	}
	/**
	 * onRestart時控件變為可操作狀態,並清空密碼顯示
	 */
	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
		btnsetEnabled();//設置控件可操作
		//清空密碼
		for(int i=0;i<5;i++){
			editNum[i].setText("");				
		}
	}
	 
	 
}

 

 

布局實現代碼:主要使用了線性布局

 



    
      
    

2、在寫記事本中記錄數據使用了sqlite數據庫,因為現在的主流移動設備像Android、iPhone等都使用SQLite作為復雜數據的存儲引擎,在我們為移動設備開發應用程序時,也許就要使用到SQLite來存儲我們大量的數據,所以我們就需要掌握移動設備上的SQLite開發技巧。對於Android平台來說,系統內置了豐富的API來供開發人員操作SQLite,我們可以輕松的完成對數據的存取。

 

	/**
	 * 保存數據監聽器
	 * @author aeon
	 *
	 */
	public class saveListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub					
				SimpleDateFormat   sDateFormat   =   new   SimpleDateFormat("yyyy-MM-dd"); 				
		        data   =   sDateFormat.format(new  java.util.Date()); 
				//if(diary!=null)
	           // {
	                //return;            
		            People people = new People();
		            people.Time = data;
		            people.Diary = diarycontent.getText().toString();//獲取輸入日志內容		           
		            //people.Height = 1;
		            long colunm = dbAdapter.insert(people);
		            if(colunm == -1)
		            {
		                Toast.makeText(getApplication(), "添加錯誤", Toast.LENGTH_SHORT).show();
		            }
		            else
		            {
		            	Toast.makeText(getApplication(), "成功添加數據 ", Toast.LENGTH_SHORT).show();
		               // Toast.makeText(getApplication(), "成功添加數據 , ID: "+String.valueOf(colunm), Toast.LENGTH_SHORT).show();
		            }   
		          //  Firstpage.displaydiary1();//當點擊保存後更新listview列表數據
		            finish();//寫完日記後結束該activity以免多次保存
		}
		
	}
關於記事本用到的數據庫的一些操作,更新日記

 

 

/**
	 * 修改內容監聽器
	 * @author xing
	 *
	 */
	public class changeListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub			
		 
			People people = new People();
            people.Diary = diarycontent.getText().toString();
            people.Time  = data;
            //people.Height = Float.parseFloat(heightEdit.getText().toString());
            Intent intent=getIntent();  
            timeid=intent.getStringExtra("timeid");     
            if(timeid!=null){
            	 
            	  int  id = Integer.parseInt(timeid);
                 // Toast.makeText(getApplication(),timeid, Toast.LENGTH_SHORT).show();          
                  long count = dbAdapter.updateOneData(id, people);      
                   
                   if(count == -1 )
                   {
                   	Toast.makeText(getApplication(), "更新錯誤", Toast.LENGTH_SHORT).show();
                       //display.setText("");
                   }
                   else
                   {
                   	//Toast.makeText(getApplication(), "更新成功"+"更新數據第"+String.valueOf(id)+"條", Toast.LENGTH_SHORT).show();
                   	Toast.makeText(getApplication(), "更新成功", Toast.LENGTH_SHORT).show(); 
                   }
                   
                   finish(); 
            }else{
            	Toast.makeText(getApplication(), "請點擊保存", Toast.LENGTH_SHORT).show();
            }                     
			//hintKb();		
		}
		
	}

刪除記事本代碼

 

 

/**
	 * 刪除所有記事對話框
	 */
	public void showdeleteDialog(){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		LayoutInflater inflater = getLayoutInflater();
	    View layout = inflater.inflate(R.layout.dialog, null);
	    builder.setView(layout);
	    builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle(R.string.firstdialogtitle);
		builder.setMessage("請問您是否要刪除所有記事?");
		builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub				
				dbAdapter.deleteAllData();
				Diaryadapter.clear(); //刪除數據後清空listview顯示
	            Toast.makeText(getApplication(), "日志已刪除", Toast.LENGTH_SHORT).show();			             
			}
		});
		builder.setNegativeButton("cancel",
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						
					}
				});
		final AlertDialog dlg = builder.create();
		dlg.show();
	}
編輯記事本功能

 

 

/**
		 * 編輯該天事件監聽器
		 */
		Button editordialog  = (Button)layout.findViewById(R.id.editordialog);
		editordialog.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub								
				Intent intent = new Intent(Firstpage.this,WriteDiaryActivity.class);
				String spStr[] = itemdata1.split("日記內容:");//匹配字符串
				String spStr1[] = itemdata1.split(",時間");//匹配字符串
				intent.putExtra("diary", spStr[1]);  //獲取內容
				intent.putExtra("timeid", spStr1[0]);//獲取id
				//intent.putExtra("", "");
//				Bundle bundle=new Bundle();  
//	            bundle.putString("result", "第一個activity的內容");  
//	            bundle.putString("content",content);  
//	            intent.putExtras(bundle);  
				startActivity(intent);
				//finish();//跳轉後結束dialog
			}
		});
3、完整的寫記事本跟現實代碼:

 

 

package com.example.diary;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import tree.love.Adapter.DBAdapter;
import tree.love.Bean.People;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class WriteDiaryActivity extends Activity {  
	  
	private TextView time;
	private Button takephoto;
	private Button finish;
	private Button delete;
	private Button change;
	private EditText diarycontent;
	private Button scanphoto;
	private Button save;
	private Button autocam;
	private ImageView imageview4,imageview1,imageview2,imageview3;
	private SoundPool sp;//聲明一個SoundPool   
	private int music;//定義一個整型用load();來設置suondID    
	
	private DBAdapter dbAdapter;
	
	int count = 0;
	String diary;
	String data;
	String aa;
	String timeid;
   // Firstpage Firstpage = new Firstpage();
    int num=0;
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        super.onCreate(savedInstanceState);  
      //去除標題
       // requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.writediarycome);   
        //初始化UI
        initUI();
        //獲得實例
        dbAdapter = new DBAdapter(this);
        //打開數據庫
        dbAdapter.open();
        
    }
    
//    /**
//     * 判斷輸入內容是否為空
//     * @return
//     */
//    boolean isRight()
//    {
//        if(diary.length() == 0)
//        {
//            Toast.makeText(getApplication(), "請輸入符合場常理的數據", Toast.LENGTH_SHORT).show();
//            return false;
//        }else
//        {
//            return true;
//        }
//    }
    
    /**
     * 初始化UI控件
     */
	private void initUI() {
		// TODO Auto-generated method stub
		 //獲取聲音文件
        sp= new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);//第一個參數為同時播放數據流的最大個數,第二數據流類型,第三為聲音質量   
        music = sp.load(this, R.raw.jie, 1); //把你的聲音素材放到res/raw裡,第2個參數即為資源文件,第3個為音樂的優先級  
		autocam = (Button)findViewById(R.id.autocam);
		autocam.setOnClickListener(new autocamListener());
		imageview3 = (ImageView)findViewById(R.id.imageview3);
		imageview3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				getCurrentScreen();
				sp.play(music, 1, 1, 0, 0, 1);   //拍照聲音
			}
		});		
		
		save = (Button)findViewById(R.id.save);
		save.setOnClickListener(new saveListener());
		
		change = (Button)findViewById(R.id.change);
		change.setOnClickListener(new changeListener());
		
		diarycontent = (EditText)findViewById(R.id.diarycontent);
		diary = diarycontent.getText().toString();
		
		delete = (Button)findViewById(R.id.delete);
		delete.setOnClickListener(new deleteListener());
		
		finish = (Button)findViewById(R.id.finish);
		finish.setOnClickListener(new finishListener());
		imageview4 = (ImageView)findViewById(R.id.imageview4);
		imageview4.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				finish();
			}
		});
		
		takephoto = (Button)findViewById(R.id.takephoto);
		takephoto.setOnClickListener(new takephotoListener());
		imageview1 = (ImageView)findViewById(R.id.imageview1);
		imageview1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  			 
	            startActivityForResult(intent, 1);	
			}
		});
		
		scanphoto = (Button)findViewById(R.id.sanphoto);
		scanphoto.setOnClickListener(new scanphotoListener());
		imageview2 = (ImageView)findViewById(R.id.imageview2);
		imageview2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(WriteDiaryActivity.this,Scanphoto.class);
				startActivity(intent);
			}
		});
		time = (TextView)findViewById(R.id.time);
		
		time();//獲取手機當前時間
		time1();//獲取手機日期,年月日
		receiveaadata();
	}  
	/**
	 * 接收顯示編輯diary
	 */
	public void receiveaadata(){	
		Intent intent=getIntent();  
		aa=intent.getStringExtra("diary"); 
		diarycontent.setText(aa);
		if(aa!=null){
			save.setEnabled(false);//設置保存按鈕為不可操作狀態
		}
	}
	
	/**
	 * 保存數據監聽器
	 * @author aeon
	 *
	 */
	public class saveListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub					
				SimpleDateFormat   sDateFormat   =   new   SimpleDateFormat("yyyy-MM-dd"); 				
		        data   =   sDateFormat.format(new  java.util.Date()); 
				//if(diary!=null)
	           // {
	                //return;            
		            People people = new People();
		            people.Time = data;
		            people.Diary = diarycontent.getText().toString();//獲取輸入日志內容		           
		            //people.Height = 1;
		            long colunm = dbAdapter.insert(people);
		            if(colunm == -1)
		            {
		                Toast.makeText(getApplication(), "添加錯誤", Toast.LENGTH_SHORT).show();
		            }
		            else
		            {
		            	Toast.makeText(getApplication(), "成功添加數據 ", Toast.LENGTH_SHORT).show();
		               // Toast.makeText(getApplication(), "成功添加數據 , ID: "+String.valueOf(colunm), Toast.LENGTH_SHORT).show();
		            }   
		          //  Firstpage.displaydiary1();//當點擊保存後更新listview列表數據
		            finish();//寫完日記後結束該activity以免多次保存
		}
		
	}
	
	/**
	 * 修改內容監聽器
	 * @author xing
	 *
	 */
	public class changeListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub			
		 
			People people = new People();
            people.Diary = diarycontent.getText().toString();
            people.Time  = data;
            //people.Height = Float.parseFloat(heightEdit.getText().toString());
            Intent intent=getIntent();  
            timeid=intent.getStringExtra("timeid");     
            if(timeid!=null){
            	 
            	  int  id = Integer.parseInt(timeid);
                 // Toast.makeText(getApplication(),timeid, Toast.LENGTH_SHORT).show();          
                  long count = dbAdapter.updateOneData(id, people);      
                   
                   if(count == -1 )
                   {
                   	Toast.makeText(getApplication(), "更新錯誤", Toast.LENGTH_SHORT).show();
                       //display.setText("");
                   }
                   else
                   {
                   	//Toast.makeText(getApplication(), "更新成功"+"更新數據第"+String.valueOf(id)+"條", Toast.LENGTH_SHORT).show();
                   	Toast.makeText(getApplication(), "更新成功", Toast.LENGTH_SHORT).show(); 
                   }
                   
                   finish(); 
            }else{
            	Toast.makeText(getApplication(), "請點擊保存", Toast.LENGTH_SHORT).show();
            }                     
			//hintKb();		
		}
		
	}
	/**
	 * 打開與關閉軟件鍵盤
	 */
	 @SuppressWarnings("unused")
	private void hintKb() {
		InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
		   // 得到InputMethodManager的實例
		   if (imm.isActive()) {
		    // 如果開啟
			   imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
		       InputMethodManager.HIDE_NOT_ALWAYS);
		    // 關閉軟鍵盤,開啟方法相同,這個方法是切換開啟與關閉狀態的
		   }
	    }
	
	/**
	 * 刪除監聽器
	 * @author aeon
	 *
	 */
	public class deleteListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub	
			showDialog();				
		}
		
	}

	/**
	 * delete自定義對話框
	 * @author ning
	 *
	 */
	public void showDialog(){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		LayoutInflater inflater = getLayoutInflater();
	    View layout = inflater.inflate(R.layout.dialog, null);
	    builder.setView(layout);
	    builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle(R.string.dialogtitle);
		builder.setMessage("請問您是否要刪除該天記事?");
		builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				
				diarycontent.setText("");
				Toast.makeText(getBaseContext(), "刪除成功", Toast.LENGTH_SHORT).show();
			}
		});
		builder.setNegativeButton("cancel",
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//finish();
					}
				});
		final AlertDialog dlg = builder.create();
		dlg.show();
	}
	
	/**
	 * 退出監聽器
	 * @author aeon
	 *
	 */
	public class finishListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			//結束本頁面與logoActivity,返回到登錄頁面
//			Intent intent = new Intent();
//			intent.setClass(WriteDiaryActivity.this, MainActivity.class);
//			intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG設置
//			startActivity(intent);			
			finish();
		}		
	}
	/**
	 * takephoto監聽器
	 *
	 * */
	public class takephotoListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  			 
            startActivityForResult(intent, 1);			
		}
		
	}
	
	/*
	 * 獲取時間
	 * return null 
	 * */
	public void time(){
		
		SimpleDateFormat   sDateFormat   =   new   SimpleDateFormat("yyyy-MM-dd hh:mm");     
        String   date   =   sDateFormat.format(new  java.util.Date());  
        time.setText(date);
	}
	/**
	 * 獲取手機當前年月日
	 */
	public void time1(){
		SimpleDateFormat   sDateFormat   =   new   SimpleDateFormat("yyyy-MM-dd"); 				
        data   =   sDateFormat.format(new  java.util.Date()); 
	}
	/**
	 * 浏覽拍好的圖片
	 * @author aeon
	 *
	 */
	public class scanphotoListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			//scanphotodialog();
			Intent intent = new Intent(WriteDiaryActivity.this,Scanphoto.class);
			startActivity(intent);
		}
		
	}
	
	/**執行拍照
	 * (non-Javadoc)
	 * @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
	 * @param requestCode \resultCode \data
	 * Exception 當不加權限的時候會報空指針
	 */	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		
		if(resultCode == Activity.RESULT_OK ){
			count++;
			String sdStatus = Environment.getExternalStorageState();  
            if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 檢測sd是否可用  
                Log.i("TestFile",  
                        "SD card is not avaiable/writeable right now.");  
                return;  
            }  
            //String name = new DateFormat().format("yyyyMMdd_hhmmss",Calendar.getInstance(Locale.CHINA)) + ".jpg"; 
          
            //Toast.makeText(this, name, Toast.LENGTH_LONG).show();   
            Bundle bundle = data.getExtras();  
            Bitmap bitmap = (Bitmap) bundle.get("data");// 獲取相機返回的數據,並轉換為Bitmap圖片格式  
          
            FileOutputStream b = null;  
            File file = new File("/sdcard/data/");  
            file.mkdirs();// 創建文件夾  
           // String fileName = "/sdcard/data/"+name; 
            String s = String.valueOf(count)+".jpg";
          
            String fileName = "/sdcard/data/"+s;
  
            try {  
                b = new FileOutputStream(fileName);  
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把數據寫入文件  
            } catch (FileNotFoundException e) {  
                e.printStackTrace();  
            } finally {  
                try {  
                    b.flush();  
                    b.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }              
           // ((ImageView) findViewById(R.id.imageview)).setImageBitmap(bitmap);// 將圖片顯示在ImageView裡  
        }  
		super.onActivityResult(requestCode, resultCode, data);
	}  
	/**
	 * autocam監聽器
	 * @author aeon
	 *
	 */
	public class autocamListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			getCurrentScreen();
		}
		
	}
	
	/**
	 * 截屏
	 */
	@SuppressWarnings("deprecation")
	public void getCurrentScreen() {  
		num++;
        // 1.構建Bitmap  
        WindowManager windowManager = getWindowManager();  
        Display display = windowManager.getDefaultDisplay();  
        int w = display.getWidth();//w=480  
        int h = display.getHeight();//h=800  
        Bitmap imageBitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888);//最後一個參數叫位圖結構  
        //ARGB--Alpha,Red,Green,Blue.   
        //ARGB為一種色彩模式,也就是RGB色彩模式附加上Alpha(透明度)通道,常見於32位位圖的存儲結構。  
  
        // 2.獲取屏幕  
        View decorview = this.getWindow().getDecorView();//decor意思是裝飾布置  
        decorview.setDrawingCacheEnabled(true);  
        imageBitmap = decorview.getDrawingCache();                
      
      //  String SaveImageFilePath = getSDCardPath() + "/gameCounter";//保存圖片的文件夾路徑  
        String SaveImageFilePath = getSDCardPath() + "/data";//保存圖片的文件夾路徑  data為新建文件夾
  
        // 3.保存Bitmap  
        try {  
            File path = new File(SaveImageFilePath);  
           // String imagepath = SaveImageFilePath + "/data" + ".png";//保存圖片的路徑  
            String imagepath = SaveImageFilePath + "/data"+num + ".png";//保存圖片的路徑 
            File file = new File(imagepath);  
            if (!path.exists()) {  
                path.mkdirs();  
            }  
            if (!file.exists()) {  
                file.createNewFile();  
            }  
  
            FileOutputStream fos = null;  
            fos = new FileOutputStream(file);  
            if (null != fos) {  
                //imageBitmap.compress(format, quality, stream);  
                //把位圖的壓縮信息寫入到一個指定的輸出流中  
                //第一個參數format為壓縮的格式  
                //第二個參數quality為圖像壓縮比的值,0-100.0 意味著小尺寸壓縮,100意味著高質量壓縮  
                //第三個參數stream為輸出流  
                imageBitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);  
                fos.flush();  
                fos.close();  
                Toast.makeText(this,"圖片已經已保存在手機卡data文件目錄下",Toast.LENGTH_LONG).show(); 
                //text.setText("圖片已經已保存至"+SaveImageFilePath);
            }  
  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
    /** 
     * 獲取SDCard的目錄路徑功能 
     */  
    private String getSDCardPath() {  
        String SDCardPath = null;  
        // 判斷SDCard是否存在  
        boolean IsSDcardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);  
        if (IsSDcardExist) {  
            SDCardPath = Environment.getExternalStorageDirectory().toString();//SD卡的路徑為: /mnt/sdcard              
        }  
        return SDCardPath;  
    }
    /**
     * 結束時關閉數據庫
     */
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		dbAdapter.close();//關閉數據庫
	}  
    
}

布局代碼:

 


  
  
      

 

實現記事本內容代碼:

package com.example.diary;

import tree.love.Adapter.DBAdapter;
import tree.love.Bean.People;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.Toast;

public class Firstpage extends Activity {
	private Button writediary;
	private Button set;
	private Button deletediary;
	private Button scandiary;
	private Button firstfinish;
	private ListView diarylistview;
		
	private PopupWindow popupwindow;
	private DBAdapter dbAdapter;
	
	
	 String result = "";
	 String itemdata,itemdata1;
	// String iddiary;
	 private ArrayAdapter Diaryadapter;
	@Override  
    protected void onCreate(Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        super.onCreate(savedInstanceState);  
      //去除標題
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.firstpage);       
      //獲得實例
        dbAdapter = new DBAdapter(this);
        //打開數據庫
        dbAdapter.open();
        initUI();
       
    }
	/**
	 * 初始化UI
	 */
	private void initUI() {
		// TODO Auto-generated method stub
		 // 初使化設備存儲數組
		Diaryadapter = new ArrayAdapter(this, R.layout.listview_format);
		diarylistview = (ListView)findViewById(R.id.diaryshow);
		diarylistview.setOnItemClickListener(new diarylistviewItemListener());
		//Diaryadapter.clear();
		diarylistview.setAdapter(Diaryadapter);
		
		firstfinish = (Button)findViewById(R.id.firstfinish);
		firstfinish.setOnClickListener(new firstfinishListener());	
				
		set = (Button)findViewById(R.id.set);
		set.setOnClickListener(new setListener());		
		
		writediary = (Button)findViewById(R.id.writediary);
		writediary.setOnClickListener(new writeListener());
		
		deletediary = (Button)findViewById(R.id.deletediary);
		deletediary.setOnClickListener(new deletediaryListener());
		
		scandiary = (Button)findViewById(R.id.scandiary);
		scandiary.setOnClickListener(new scandiaryListener());
		displaydiary();//登錄進去後顯示所有日記
		photodialog();
//		handler.removeCallbacks(runnable);
//		handler.postDelayed(runnable,1000);
	}
	/**
	 * 由於更新完數據和寫完日記後listview不能自動更新,如果在writeDiaryActivity調用display()
	 * 方法會出現空指針,因此添加一個定時器定時刷新listview
	 */
	private Handler handler = new Handler();
	private Runnable runnable = new Runnable() {
         public void run () {
        	 displaydiary();
         handler.postDelayed(this,1000); 
      }
    };
    
    /**
     * 退出
     * @author aeon
     *
     */
    public class firstfinishListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			finish();
		}
    	
    }
    
	/**
	 * listview item事件監聽器,並根據listview id獲取到數據庫數據,再賦值給itemdata1
	 * @author aeon
	 *
	 */
	public class diarylistviewItemListener implements OnItemClickListener{

		@Override
		public void onItemClick(AdapterView arg0, View arg1, int arg2,
				long arg3) {
			// TODO Auto-generated method stub
			for(int i=0;i<1000;i++){
				if(arg2 ==i){					
					itemdata = Diaryadapter.getItem(arg2);		
					Diaryadapter.clear();
					String result1 = "";
					String c = String.valueOf(arg3);
					int cc = Integer.parseInt(c);
					 People[] peoples = dbAdapter.queryAllData();             
			         for (int j = 0; j < peoples.length; j++)
			        	 
			         {			            
			             result1 =peoples[cc].toString()+"\n";
			         }   
					 itemdata1 = result1;
					showItemDialog();	//點擊listviewitem後彈出item對話框
				}
			}
		}		
	}
	
	/**
	 * deletediary 監聽器
	 * @author aeon
	 *
	 */
	public class deletediaryListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			
			showdeleteDialog();		//彈出是否刪除全部數據對話框	
//			dbAdapter.deleteAllData();
//			Diaryadapter.clear(); //刪除數據後清空listview顯示
//          Toast.makeText(getApplication(), "日志已刪除", Toast.LENGTH_SHORT).show();
		}
		
	}
	/**
	 * scandiary 監聽器
	 * @author aeon
	 *
	 */
	public class scandiaryListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			displaydiary();
			// TODO Auto-generated method stub
//			 People[] peoples = dbAdapter.queryAllData();
//             if(peoples == null)
//             {            	 
//                 Toast.makeText(getApplication(), "數據庫裡面沒有數據", Toast.LENGTH_SHORT).show();               
//                 return;
//             }
//           //  Toast.makeText(getApplication(), "數據庫:", Toast.LENGTH_SHORT).show();
//             //String result = "";
//             //該方式會使所有數據都添加到一個item裡面去 
//             for (int i = 0; i < peoples.length; i++)
//             {
//            	 result += peoples[i].toString()+"\n";   
//                // result = peoples[i].toString()+"\n";   
//                 
//             }
//             //Diaryadapter.clear(); 
//             Diaryadapter.add(result);  
//             result = "";         //添加完後將result清空,防止下次點擊會累加
           //  scandiary.setEnabled(false);        
            // display.setText(result);
		}
		
	}
	/**
	 * 更新listview數據並拆分數據得到id和時間後面的數據
	 */
	public void displaydiary(){
		Diaryadapter.clear();
		 People[] peoples = dbAdapter.queryAllData();
         if(peoples == null)
         {            	 
           //  Toast.makeText(getApplication(), "數據庫裡面沒有數據", Toast.LENGTH_SHORT).show();               
             return;
         }
        
         for (int i = 0; i < peoples.length; i++)
         {
             result = peoples[i].toString()+"\n";              
             String spStrone[] = result.split(",時間:");//匹配字符串         
             Diaryadapter.add(spStrone[1]); 
         }         
         result = "";         //添加完後將result清空,防止下次點擊會累加
	}

	/**
	 * 打開列表監聽器
	 * @author aeon
	 *
	 */
	public class setListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			switch (v.getId()) {
			case R.id.set:
				set.setText("設置");
				if (popupwindow != null&&popupwindow.isShowing()) {
					popupwindow.dismiss();
					return;
				} else {
					set.setText("關閉");
					initmPopupWindowView();
					popupwindow.showAsDropDown(v, 0, 5);
				}
				break;
			default:
				break;
			}
		}
		
	}
	/**
	 * 彈出列表method
	 */
	public void initmPopupWindowView() {

		// // 獲取自定義布局文件pop.xml的視圖
		View customView = getLayoutInflater().inflate(R.layout.view_item,
				null, false);
		// 創建PopupWindow實例,200,150分別是寬度和高度
		popupwindow = new PopupWindow(customView, 300, 300);
		// 設置動畫效果 [R.style.AnimationFade 是自己事先定義好的]
		popupwindow.setAnimationStyle(R.style.AnimationFade);
		// 自定義view添加觸摸事件
		customView.setOnTouchListener(new OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {
				if (popupwindow != null && popupwindow.isShowing()) {
					popupwindow.dismiss();
					popupwindow = null;
				}

				return false;
			}
		});
		//初始化view_item UI
		Button grid = (Button) customView.findViewById(R.id.grid);
		Button list = (Button) customView.findViewById(R.id.more);
		final CheckBox gridCB = (CheckBox)customView.findViewById(R.id.gridCB);
		final CheckBox listCB = (CheckBox)customView.findViewById(R.id.listCB);
		//宮格顯示監聽
		gridCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){  
			
            public void onCheckedChanged(android.widget.CompoundButton compoundButton, boolean b){  
            	//popupwindow.dismiss();
            	gridCB.setChecked(true);
                Toast.makeText(getApplication(),"gridCB",Toast.LENGTH_LONG).show();  
            }  
        });  
		//列表顯示監聽
		listCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){  
			
            public void onCheckedChanged(android.widget.CompoundButton compoundButton, boolean b){  
            	//popupwindow.dismiss();
            	listCB.setChecked(true);
                Toast.makeText(getApplication(),"listCB",Toast.LENGTH_LONG).show();  
            }  
        }); 
		
		//設置
		grid.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(Firstpage.this,Setting.class);
				startActivity(intent);
				set.setText("設置");
				popupwindow.dismiss();
			}
		});
		
		//list按鈕監聽器
		list.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				//Intent intent = new Intent(Firstpage.this,Image.class);
				//startActivity(intent);
				Toast.makeText(getApplicationContext(), "沒有更多選項了", Toast.LENGTH_SHORT).show();
				set.setText("設置");
				popupwindow.dismiss();				
			}
		});

		
	}
	

	/**
	 * 寫筆記監聽器
	 * @author aeon
	 *
	 */
	public class writeListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			Intent intent = new Intent(Firstpage.this,WriteDiaryActivity.class);
			startActivity(intent);
		}
		
	}

	/**
	 * 刪除所有記事對話框
	 */
	public void showdeleteDialog(){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		LayoutInflater inflater = getLayoutInflater();
	    View layout = inflater.inflate(R.layout.dialog, null);
	    builder.setView(layout);
	    builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle(R.string.firstdialogtitle);
		builder.setMessage("請問您是否要刪除所有記事?");
		builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub				
				dbAdapter.deleteAllData();
				Diaryadapter.clear(); //刪除數據後清空listview顯示
	            Toast.makeText(getApplication(), "日志已刪除", Toast.LENGTH_SHORT).show();			             
			}
		});
		builder.setNegativeButton("cancel",
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						
					}
				});
		final AlertDialog dlg = builder.create();
		dlg.show();
	}
	
	/**
	 * 彈出item事件處理對話框
	 */
	public void showItemDialog(){
		final AlertDialog.Builder builder = new AlertDialog.Builder(this);	
		LayoutInflater inflater = getLayoutInflater();
		final View layout = inflater.inflate(R.layout.item_dialog, null);	
	    builder.setView(layout);
	    builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle(R.string.itemdialogtitle);
		//builder.setMessage("");		
		Button deleteitem  = (Button)layout.findViewById(R.id.deleteitem);
		/**
		 * 刪除該天記事監聽器
		 */
		
		deleteitem.setOnClickListener(new OnClickListener() {
			
			@SuppressWarnings("static-access")
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				 String spStr1[] = itemdata1.split(",時間");//匹配字符串
				 int  id = Integer.parseInt(spStr1[0]);
	             long result = dbAdapter.deleteOneData(id);
                 Log.i(dbAdapter.DB_ACTION, "delete long :"+result);
                // String msg = "刪除ID為"+id+"的數據" + (result>0?"成功":"失敗");      
                 String msg = "數據刪除" + (result>0?"成功":"失敗");     
			   	 Toast.makeText(getApplication(), msg, Toast.LENGTH_SHORT).show();
			   	//dlg.dismiss();	
			     displaydiary();
			}
		});
		
		/**
		 * 編輯該天事件監聽器
		 */
		Button editordialog  = (Button)layout.findViewById(R.id.editordialog);
		editordialog.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub								
				Intent intent = new Intent(Firstpage.this,WriteDiaryActivity.class);
				String spStr[] = itemdata1.split("日記內容:");//匹配字符串
				String spStr1[] = itemdata1.split(",時間");//匹配字符串
				intent.putExtra("diary", spStr[1]);  //獲取內容
				intent.putExtra("timeid", spStr1[0]);//獲取id
				//intent.putExtra("", "");
//				Bundle bundle=new Bundle();  
//	            bundle.putString("result", "第一個activity的內容");  
//	            bundle.putString("content",content);  
//	            intent.putExtras(bundle);  
				startActivity(intent);
				//finish();//跳轉後結束dialog
			}
		});
		/**
		 * cancel
		 */
		builder.setNegativeButton("cancel",
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//finish();
					}
				});
		final AlertDialog dlg = builder.create();
		dlg.show();
		
	}
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		dbAdapter.close();
		handler.removeCallbacks(runnable);//關閉定時器
	}
	//暫停時停止定時器
	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		handler.removeCallbacks(runnable);//停止定時器
	}
	//重啟時啟動定時器,定時器一直放在初始化中一直執行太耗內存,但會出現少許延遲
	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
		handler.removeCallbacks(runnable);
		handler.postDelayed(runnable,200);
	}
	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		handler.removeCallbacks(runnable);//停止定時器
	}
	/**
	 * 圖片對話框
	 */
	protected void photodialog() {
		  AlertDialog.Builder builder = new Builder(this);
		 
		  builder.setIcon(R.drawable.welcome);
		  builder.setTitle("welcome");
		  //builder.setMessage("welcome");
		  builder.setPositiveButton("確認", new DialogInterface.OnClickListener() {   
			  public void onClick(DialogInterface dialog, int which) {
		   
		   }
		  }); 
		  builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {   
			  public void onClick(DialogInterface dialog, int which) {
			  
		   }
		  }); 
		  builder.create().show();
		}
}

布局代碼:

 



    
    

數據庫各種操作方法實現類代碼:

 

package tree.love.Adapter;

import tree.love.Bean.People;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;

/**
 * @author 
 *
 */
public class DBAdapter
{
    public static final String DB_ACTION="db_action";//LogCat
    
    private static final String DB_NAME="people.db";//數據庫名
    private static final String DB_TABLE="peopleinfo";//數據庫表名
    private static final int    DB_VERSION=1;//數據庫版本號
    
    public static final String KEY_ID = "_id";  //表屬性ID
    public static final String KEY_NAME = "name";//表屬性name
    public static final String KEY_AGE  = "age";//表屬性age
    public static final String KEY_HEIGHT = "height";//表屬性height
    
    private SQLiteDatabase db ;
    private Context xContext ;
    private DBOpenHelper dbOpenHelper ;
    public DBAdapter(Context context)
    {
        xContext = context ;
    }
    
    /** 
     * 空間不夠存儲的時候設為只讀
     * @throws SQLiteException
     */
    public void open() throws SQLiteException
    {
        dbOpenHelper = new DBOpenHelper(xContext, DB_NAME, null,DB_VERSION);
        try
        {
            db = dbOpenHelper.getWritableDatabase();
        }
        catch (SQLiteException e)
        {
            db = dbOpenHelper.getReadableDatabase();
        }
    }
    
    public void close()
    {
        if(db != null)
        {
            db.close();
            db = null;
        }
    }
    /**
     * 向表中添加一條數據
     * @param people
     * @return
     */
    public long insert(People people)
    {
        ContentValues newValues = new ContentValues();
        
        newValues.put(KEY_NAME, people.Diary);
        newValues.put(KEY_AGE, people.Time);
       // newValues.put(KEY_HEIGHT, people.Height);
        
        return db.insert(DB_TABLE, null, newValues);
    }
    
    /**
     * 刪除一條數據
     * @param id
     * @return
     */
    public long deleteOneData(long id)
    {
        return db.delete(DB_TABLE, KEY_ID+"="+id, null );
    }
    /**
     * 刪除所有數據
     * @return
     */
    public long deleteAllData()
    {    	 
        return db.delete(DB_TABLE, null, null);
    }
    /**
     * 根據id查詢數據的代碼
     * @param id
     * @return
     */
    public People[] queryOneData(long id)
    {
        Cursor result = db.query(DB_TABLE, new String[] {KEY_ID,KEY_NAME,KEY_AGE,KEY_HEIGHT}, 
                KEY_ID+"="+id, null, null, null, null);
        return ConvertToPeople(result) ;
    }
    /**
     * 查詢全部數據的代碼
     * @return
     */
    public People[] queryAllData()
    {
        Cursor result = db.query(DB_TABLE, new String[] {KEY_ID,KEY_NAME,KEY_AGE,KEY_HEIGHT}, 
                null, null, null, null, null);
        return ConvertToPeople(result);
    }
    /**
     * 更新數據
     * @param id
     * @param people
     * @return
     */
    public long updateOneData(long id ,People people)
    {
        ContentValues newValues = new ContentValues();
        
        newValues.put(KEY_NAME, people.Diary);
        newValues.put(KEY_AGE, people.Time);
       // newValues.put(KEY_HEIGHT, people.Height);
        
        return db.update(DB_TABLE, newValues, KEY_ID+"="+id, null);
    }
    
    private People[] ConvertToPeople(Cursor cursor)
    {
        int resultCounts = cursor.getCount();
        if(resultCounts == 0 || !cursor.moveToFirst())
        {
            return null ;
        }
        People[] peoples = new People[resultCounts];
        Log.i(DB_ACTION, "PeoPle len:"+peoples.length);
        for (int i = 0; i < resultCounts; i++)
        {
            peoples[i] = new People();
            peoples[i].ID = cursor.getInt(0);
            peoples[i].Diary = cursor.getString(cursor.getColumnIndex(KEY_NAME));
            peoples[i].Time  = cursor.getString(cursor.getColumnIndex(KEY_AGE));
           // peoples[i].Height = cursor.getFloat(cursor.getColumnIndex(KEY_HEIGHT));
            Log.i(DB_ACTION, "people "+i+"info :"+peoples[i].toString());
            cursor.moveToNext();
        }
        return peoples;
    }
    
    
    /**
     * 靜態Helper類,用於建立、更新和打開數據庫
     */
    private static class DBOpenHelper extends SQLiteOpenHelper
    {
        /*
         * 手動建庫代碼
        CREATE TABLE peopleinfo
        (_id integer primary key autoincrement,
        name text not null,
        age integer,
        height float);*/
        private static final String DB_CREATE=
        "CREATE TABLE "+DB_TABLE
        +" ("+KEY_ID+" integer primary key autoincrement, "
        +KEY_NAME+" text not null, "
        +KEY_AGE+" integer,"+
        KEY_HEIGHT+" float);";
        public DBOpenHelper(Context context, String name,
                CursorFactory factory, int version)
        {
            super(context, name, factory, version);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            db.execSQL(DB_CREATE);
            Log.i(DB_ACTION, "onCreate");
        }

        @Override
        public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion)
        {
            //函數在數據庫需要升級時被調用,
            //一般用來刪除舊的數據庫表,
            //並將數據轉移到新版本的數據庫表中
            _db.execSQL("DROP TABLE IF EXISTS "+DB_TABLE);
            onCreate(_db);
            Log.i(DB_ACTION, "Upgrade");
        }

    }
}
數據格式定義代碼
package tree.love.Bean;

public class People {
	public int ID = -1;
	public String Diary;
	public String Time;
	@Override
    public String toString()
    {
        String result =this.ID+","+
        		"時間:"+this.Time+","
        		+"日記內容:"+this.Diary;
        return result;
    }
}


 

 

實現效果圖

 

\
 

\\

\

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved