【练习】简陋的便签
一、項目介紹:
????? 這是一個簡易的便簽,主要就是listview和數(shù)據庫sqlite
二、項目運行效果圖:
三、工程目錄:
四、代碼:
1.Chaxun.java
package com.example.Shujvku;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.yyd.view.entity.Bianqian; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase;public class Chaxun {private Shujvkulianjie dbHelper;private SQLiteDatabase sqLiteDatabase;public Chaxun(Context context){dbHelper=new Shujvkulianjie(context);}//添加//添加數(shù)據傳入 標題 內容 id和時間自動獲取 public void tianjia(String title ,String content){sqLiteDatabase=dbHelper.openDatabase();String sql="insert into notes(title,content) values(?,?)";sqLiteDatabase.execSQL(sql, new String[]{title,content});sqLiteDatabase.close();}//刪除public void shanchu(String id){ //得到id 通過id對表中的數(shù)據進行刪除sqLiteDatabase=dbHelper.openDatabase();String sql="delete from notes where id=?";sqLiteDatabase.execSQL(sql,new String[]{id});sqLiteDatabase.close();}//修改//通過id得到要修改的數(shù)據 把傳入的標題和內容進行修改public void xiugai(String id,String biaoti,String neirong){sqLiteDatabase=dbHelper.openDatabase();String sql="update notes set title=?,content=? where id=?";sqLiteDatabase.execSQL(sql,new String[]{biaoti,neirong,id});sqLiteDatabase.close();}/*yyd修改的查詢方法*/public List viewlist_bianqian(){List<Bianqian> list=new ArrayList<Bianqian>();Bianqian hero;sqLiteDatabase=dbHelper.openDatabase();//打開數(shù)據庫Cursor cursor = sqLiteDatabase.rawQuery("select * from notes ",null);//第二條數(shù)據while(cursor.moveToNext()) {int id=Integer.parseInt(cursor.getString(cursor.getColumnIndex("id")));String n_title=cursor.getString(cursor.getColumnIndex("title"));String n_content=cursor.getString(cursor.getColumnIndex("content"));String n_postdate=cursor.getString(cursor.getColumnIndex("datetime"));hero=new Bianqian(id, n_title, n_content, 1, 1,true, n_postdate);list.add(hero);}sqLiteDatabase.close();//關閉數(shù)據庫return list;}/*yyd修改的模糊查詢代碼*/public List sousu(String title){List<Bianqian> list=new ArrayList<Bianqian>();Bianqian hero;sqLiteDatabase=dbHelper.openDatabase();//打開數(shù)據庫Cursor cursor = sqLiteDatabase.rawQuery("select * from notes where title like ?",new String[]{"%" +title +"%"});//第二條數(shù)據while(cursor.moveToNext()) {int id=Integer.parseInt(cursor.getString(cursor.getColumnIndex("id")));String n_title=cursor.getString(cursor.getColumnIndex("title"));String n_content=cursor.getString(cursor.getColumnIndex("content"));String n_postdate=cursor.getString(cursor.getColumnIndex("datetime"));hero=new Bianqian(id, n_title, n_content, 1, 1,true, n_postdate);list.add(hero);}sqLiteDatabase.close();//關閉數(shù)據庫return list;}} 2.Shujvkulianjie.java
package com.example.Shujvku;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream;import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.os.Environment; import android.util.Log;import com.example.test.R;public class Shujvkulianjie {private final int BUFFER_SIZE = 400000;public static final String DB_NAME = "windnote.db"; // 保存的數(shù)據庫文件名public static final String PACKAGE_NAME = "com.example.test";// 應用的包名public static final String DB_PATH = "/data"+ Environment.getDataDirectory().getAbsolutePath() + "/"+ PACKAGE_NAME + "/databases";/*// SDCard 定義數(shù)據庫的存放路徑private final String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/dictionary";*/private Context context;public Shujvkulianjie(Context context) {this.context = context;}public SQLiteDatabase openDatabase() {try {File myDataPath = new File(DB_PATH);if (!myDataPath.exists()) {myDataPath.mkdirs();// 如果沒有這個目錄則創(chuàng)建}String dbfile = myDataPath + "/" + DB_NAME;if (!(new File(dbfile).exists())) {// 判斷數(shù)據庫文件是否存在,若不存在則執(zhí)行導入,否則直接打開數(shù)據庫InputStream is = context.getResources().openRawResource(R.raw.windnote); // 欲導入的數(shù)據庫FileOutputStream fos = new FileOutputStream(dbfile);byte[] buffer = new byte[BUFFER_SIZE];int count = 0;while ((count = is.read(buffer)) > 0) {fos.write(buffer, 0, count);}fos.close();is.close();}SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile,null);return db;} catch (FileNotFoundException e) {Log.e("Database", "File not found");e.printStackTrace();} catch (IOException e) {Log.e("Database", "IO exception");e.printStackTrace();}return null;}} 3.MainActivity.java
package com.example.test;import java.util.ArrayList; import java.util.List;import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.Button; import android.widget.ListView; import android.widget.Toast;import com.example.Shujvku.Chaxun; import com.example.test.R; import com.yyd.view.dao.bianqianAdapter; import com.yyd.view.entity.Bianqian;/*** @author yyd 便簽列表顯示的java文件* */ public class MainActivity extends Activity {private Button btn_insert;private ListView lv;private List<Bianqian> list_bianqian;private Chaxun wordDao;private bianqianAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn_insert=(Button) findViewById(R.id.button1);lv = (ListView) findViewById(R.id.listView1);// 獲取控件}public void onResume(){viewlist();// 顯示列表的方法super.onResume();}@Overridepublic 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;}public void viewlist() {wordDao = new Chaxun(this);list_bianqian = new ArrayList<Bianqian>();list_bianqian = wordDao.viewlist_bianqian();// 通過查詢方法獲得list;// String name=String.valueOf(list1.get(0).getN_content());//第一條數(shù)據 // Toast.makeText(MainActivity.this, // "查詢成功" + list_bianqian.get(0).getN_content().toString(), // Toast.LENGTH_SHORT).show();// 提示查詢成功adapter = new bianqianAdapter(this, R.layout.fruit_item, list_bianqian);// 當前布局,子布局,數(shù)據源lv.setAdapter(adapter);onclic_edt();onclick_select();// 長按按鈕彈出選擇框}/* yyd單擊傳到添加頁面 */public void onclic_add(View v) {Intent intent=new Intent(MainActivity.this,Tianjia.class);startActivity(intent);}/* yyd單擊傳到編輯頁面 */public void onclic_edt() {lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubBianqian bianqian1 = new Bianqian();int n_id = list_bianqian.get(arg2).getId();String n_title = list_bianqian.get(arg2).getN_title();String n_content = list_bianqian.get(arg2).getN_content();String n_postdate = list_bianqian.get(arg2).getN_postdate();bianqian1 = new Bianqian(n_id, n_title, n_content, 1, 1, true,n_postdate);Intent intent = new Intent(MainActivity.this, Xiugai.class);Bundle bundle = new Bundle();bundle.putString("n_id", String.valueOf(n_id));bundle.putString("n_title", String.valueOf(n_title));bundle.putString("n_content", String.valueOf(n_content));intent.putExtras(bundle);// Toast.makeText(MainActivity.this,// "id:" + n_id+"\n title"+n_title+"\n content"+n_content,// Toast.LENGTH_SHORT).show();startActivity(intent);// 將當前l(fā)ist的類傳到編輯頁面}});}/* yyd添加單擊長按彈出菜單。 */public void onclick_select() {lv.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,final int arg2, long arg3) {// Toast.makeText(MainActivity.this, "asdf",// Toast.LENGTH_SHORT).show();// Toast.makeText(MainActivity.this,// "您選擇的是" + list_.get(arg2).getN_content().toString(),// Toast.LENGTH_SHORT).show();new AlertDialog.Builder(MainActivity.this).setTitle("系統(tǒng)提示").setIcon(R.drawable.ji03).setItems(R.array.item,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0,int arg1) {String[] pk = MainActivity.this.getResources().getStringArray(R.array.item);// 當前點擊的是哪個arrayif (pk[arg1].equals("刪除")) {// 刪除數(shù)據庫int id = list_bianqian.get(arg2).getId();String id1 = String.valueOf(id);// 執(zhí)行數(shù)據庫刪除語句wordDao.shanchu(id1);//執(zhí)行的刪除方法list_bianqian.remove(arg2);//在listview中刪除這一行adapter.notifyDataSetChanged();//更新listview// Toast.makeText(getActivity(),// "位置"+p, 1000).show();}}}).setNegativeButton("取消",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int which) {// TODO Auto-generated method stub}}).show();return true;}});}/* yyd添加一個返回按鈕的監(jiān)聽器。 */public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {// 創(chuàng)建退出對話框AlertDialog isExit = new AlertDialog.Builder(this).create();// 設置對話框標題isExit.setTitle("系統(tǒng)提示");// 設置對話框消息isExit.setMessage("確定要退出嗎?");// 添加選擇按鈕并注冊監(jiān)聽isExit.setButton("退出", listener);isExit.setButton2("取消", listener);// 顯示對話框isExit.show();}return false;}DialogInterface.OnClickListener listener = new android.content.DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {switch (which) {case AlertDialog.BUTTON_POSITIVE:// "確認"按鈕退出程序finish();break;case AlertDialog.BUTTON_NEGATIVE:// "取消"第二個按鈕取消對話框break;default:break;}}}; } 4.bianqianAdapter.java
package com.yyd.view.dao;import java.util.List;import com.example.test.R; import com.yyd.view.entity.Bianqian;import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView;/*** @author yyd* 便簽顯示用的自定義Adapter**/ public class bianqianAdapter extends ArrayAdapter{private int resourceId;public bianqianAdapter(Context context, int resource, List objects) {super(context, resource, objects);//當前布局,子布局id,數(shù)據源// TODO Auto-generated constructor stubresourceId=resource;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubBianqian hero=(Bianqian) getItem(position);View view = LayoutInflater.from(getContext()).inflate(resourceId, null);//獲取樣式;ImageView fruitImage = (ImageView) view.findViewById(R.id.img_biaoqian_title);TextView fruitTitle = (TextView) view.findViewById(R.id.tv_biaoqian_title);TextView fruitContent = (TextView) view.findViewById(R.id.tv_biaoqian_content);TextView fruitTime = (TextView) view.findViewById(R.id.tv_biaoqian_time);fruitImage.setImageResource(R.drawable.ic_launcher);//設置樣式fruitTitle.setText(hero.getN_title());fruitContent.setText(hero.getN_content());fruitTime.setText(hero.getN_postdate());return view;//返回樣式} } 5.Tianjia.java
package com.example.test;import com.example.Shujvku.Chaxun; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.text.TextUtils; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;public class Tianjia extends Activity {private Chaxun wordDao;private Button btnbaocun;private EditText etbiaoti;private EditText etneirong;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_tianjia);// 獲取控件btnbaocun = (Button) findViewById(R.id.btnbaocun);etbiaoti = (EditText) findViewById(R.id.etbiaoti);etneirong = (EditText) findViewById(R.id.etneirong);}public void tianjia(View view) {if (TextUtils.isEmpty(etbiaoti.getText().toString())) {Toast.makeText(Tianjia.this, "請輸入標題", Toast.LENGTH_SHORT).show();// 提示添加成功} else if (TextUtils.isEmpty(etneirong.getText().toString())) {Toast.makeText(Tianjia.this, "請輸入內容", Toast.LENGTH_SHORT).show();// 提示添加成功} else {wordDao = new Chaxun(this);String biaoti = etbiaoti.getText().toString().trim();// 保存一個起始結尾都被刪除的文本String neirong = etneirong.getText().toString().trim();wordDao.tianjia(biaoti, neirong);Toast.makeText(Tianjia.this, "添加成功", Toast.LENGTH_SHORT).show();// 提示添加成功finish();}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.tianjia, menu);return true;}/* yyd添加一個返回按鈕的監(jiān)聽器。 */public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {// 如果內容為空if (TextUtils.isEmpty(etbiaoti.getText().toString())) {if (TextUtils.isEmpty(etneirong.getText().toString())) {finish();}} else {// 創(chuàng)建退出對話框AlertDialog isExit = new AlertDialog.Builder(this).create();// 設置對話框標題isExit.setTitle("系統(tǒng)提示");// 設置對話框消息isExit.setMessage("確定要退出嗎?");// 添加選擇按鈕并注冊監(jiān)聽isExit.setButton("退出", listener);isExit.setButton2("取消", listener);// 顯示對話框isExit.show();}}return false;}DialogInterface.OnClickListener listener = new android.content.DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {switch (which) {case AlertDialog.BUTTON_POSITIVE:// "確認"按鈕退出程序finish();break;case AlertDialog.BUTTON_NEGATIVE:// "取消"第二個按鈕取消對話框break;default:break;}}}; <span style="font-size:14px;">} </span> 6. Xiugai .java
package com.example.test;import com.example.Shujvku.Chaxun; import com.yyd.view.entity.Bianqian;import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.text.TextUtils; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;public class Xiugai extends Activity {private Button btnquerenxiugai;private EditText etxiugaibiaoti;private EditText etxiugaineirong;private Chaxun wordDao;String id = null;String biaoti;String neirong;String biaotiqian;// 剛傳過來的參數(shù)String neirongqian;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_xiugai);Bianqian bianqian = new Bianqian();// 實例化一個便簽實體類btnquerenxiugai = (Button) findViewById(R.id.btnquedingxiugai);etxiugaibiaoti = (EditText) findViewById(R.id.etxiugaibiaoti);etxiugaineirong = (EditText) findViewById(R.id.etxiugaineirong);// 獲取控件Intent intent = this.getIntent();Bundle bundle = intent.getExtras();id = bundle.getString("n_id");String title = bundle.getString("n_title");biaotiqian = title;String content = bundle.getString("n_content");neirongqian = content;etxiugaibiaoti.setText(title);etxiugaineirong.setText(content);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.xiugai, menu);return true;}/* 點擊修改事件 */public void xiugai(View view) {if (TextUtils.isEmpty(etxiugaibiaoti.getText().toString())) {Toast.makeText(Xiugai.this, "請輸入標題", Toast.LENGTH_SHORT).show();// 提示添加成功} else if (TextUtils.isEmpty(etxiugaineirong.getText().toString())) {Toast.makeText(Xiugai.this, "請輸入內容", Toast.LENGTH_SHORT).show();// 提示添加成功} else {wordDao = new Chaxun(this);// id接收數(shù)據庫中查到的id,然后點擊進入到修改頁面時傳入idbiaoti = etxiugaibiaoti.getText().toString().trim();neirong = etxiugaineirong.getText().toString().trim();wordDao.xiugai(id, biaoti, neirong);Toast.makeText(Xiugai.this, "修改成功", Toast.LENGTH_SHORT).show();// 提示添加成功finish();}}/* yyd添加一個返回按鈕的監(jiān)聽器。 */public boolean onKeyDown(int keyCode, KeyEvent event) {// 如果做出了修改if (keyCode == KeyEvent.KEYCODE_BACK) {if (!biaotiqian.equals(etxiugaibiaoti.getText().toString())||!neirongqian.equals(etxiugaineirong.getText().toString())) {// 標題變化// 創(chuàng)建退出對話框AlertDialog isExit = new AlertDialog.Builder(this).create();// 設置對話框標題isExit.setTitle("系統(tǒng)提示");// 設置對話框消息isExit.setMessage("確定要退出嗎?");// 添加選擇按鈕并注冊監(jiān)聽isExit.setButton("退出", listener);isExit.setButton2("取消", listener);// 顯示對話框isExit.show();}else{finish();}}return false;}DialogInterface.OnClickListener listener = new android.content.DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {switch (which) {case AlertDialog.BUTTON_POSITIVE:// "確認"按鈕退出程序finish();break;case AlertDialog.BUTTON_NEGATIVE:// "取消"第二個按鈕取消對話框break;default:break;}}}; }
五、總結:
這是15年暑假期間,軟件大賽雛形,只有大體功能,這其中的有些功能留作以后備用。(注:本人英語太差)
六、項目下載地址:
http://download.csdn.net/download/yyd_diablo/8934725
總結
- 上一篇: android手机酷狗缓存,酷狗音乐(c
- 下一篇: 2022-2028全球与中国药房管理系统