大家都玩版权,我也来玩玩。高手不要鄙视我这个菜鸟哈!!!!!!!!!!!!

你的跟帖,你的评论是我前进的动力,希望大家共同进步!!!!!!!!

/*

*android记事本

*geolo无聊版

*QQ:303314679

* 请注意:转载请注明出处,谢谢合作

*/

主界面 主界面菜单

android记事本--geolo无聊版_第1张图片 android记事本--geolo无聊版_第2张图片

编辑界面 编辑界面菜单

android记事本--geolo无聊版_第3张图片 android记事本--geolo无聊版_第4张图片

显示内容菜单

android记事本--geolo无聊版_第5张图片 android记事本--geolo无聊版_第6张图片

NotepadMain.java

package com.geolo.android; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.Toast; public class NotepadMain extends Activity { /** Called when the activity is first created. */ LinearLayout mLinearLayout; ListView mListView; DatabaseManage mDatabaseManage; private static long getId; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); createListView(); //构造DatabaseManage对象 mDatabaseManage = new DatabaseManage(this); //更新视图显示 UpdataView(); //为mListView视图添加setOnItemSelectedListener监听 mListView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { getId = id; } @Override public void onNothingSelected(AdapterView<?> parent) { // 没有选中 }}); //为mListView视图添加监听 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 对于选中的项进行处理 //新建一个到查看界面的Intent对象 Intent intent = new Intent(); //新建一个传送参数的bundle对象 Bundle bundle = new Bundle(); //指定intent要启动的类 intent.setClass(NotepadMain.this, NotepadView.class); //把参数id放到bundle中传送 bundle.putLong("ID", id); //让intent携带这个bundle intent.putExtras(bundle); //启动一个新的Activity startActivity(intent); //清除bundle的参数 bundle.clear(); //关闭当前的Activity NotepadMain.this.finish(); }}); } //创建列表视图 public void createListView(){ //创建LinearLayout布局对象 mLinearLayout = new LinearLayout(this); //设置布局LinearLayout的属性 mLinearLayout.setOrientation(LinearLayout.VERTICAL); mLinearLayout.setBackgroundColor(android.graphics.Color.BLACK); //创建ListView对象 mListView = new ListView(this); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); //设置列表的背景色 mListView.setBackgroundColor(Color.BLACK); //添加mListView到mLinearLayout布局 mLinearLayout.addView(mListView , param); //设置显示mLinearLayout布局 setContentView(mLinearLayout); } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0,0,0,"添加"); menu.add(0,1,1,"删除"); menu.add(0,2,2,"退出"); return super.onCreateOptionsMenu(menu); } //删除指定数据 public void deleteAssignData(){ try { if(getId != 0){ mDatabaseManage.DeleteData(getId); Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT); UpdataView(); }else{ Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT); UpdataView(); } } catch (Exception e) { Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT); UpdataView(); e.printStackTrace(); } } //更新视图显示 public void UpdataView(){ mListView.setAdapter(mDatabaseManage.UpdataAdapter()); } @Override public boolean onOptionsItemSelected(MenuItem item){ //得到当前选中的MenuItem的ID int item_id = item.getItemId(); switch (item_id) { //添加菜单事件 case 0: //新建一个到编辑界面的Intent对象 Intent intent = new Intent(); //新建一个传送参数的bundle对象 Bundle bundle = new Bundle(); //把参数id放到bundle中传送 bundle.putString("mode", "main"); //让intent携带这个bundle intent.putExtras(bundle); //指定intent要启动的类 intent.setClass(NotepadMain.this, NotepadEditor.class); //启动一个新的Activity startActivity(intent); //关闭当前的Activity NotepadMain.this.finish(); break; //删除菜单事件 case 1: deleteAssignData(); break; //退出菜单事件 case 2: this.finish(); break; default: break; } return super.onOptionsItemSelected(item); } }

NotepadEditor.java

package com.geolo.android; import java.util.Calendar; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class NotepadEditor extends Activity { TextView tvTitle; TextView tvText; private EditText etTitle; private EditText etText; private static String title; private static String text; private static String date ; DatabaseManage mDatabaseManage; private static long getId = 0; private static boolean isBundle = false; private static Bundle bundle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(com.geolo.android.R.layout.editor); tvTitle = (TextView)findViewById(com.geolo.android.R.id.textview01); etTitle = (EditText)findViewById(com.geolo.android.R.id.edittitle); tvText = (TextView)findViewById(com.geolo.android.R.id.textview02); etText = (EditText)findViewById(com.geolo.android.R.id.edittext); //构造DatabaseManage对象 mDatabaseManage = new DatabaseManage(this); //创建一个bundle接收NotepadMain来的参数 bundle = this.getIntent().getExtras(); if(bundle.getString("mode").equals("view")){ if(bundle != null){ getId = bundle.getLong("EditorId"); //获取标题和文本的信息和ID etTitle.setText(bundle.getString("EditorTitle")); etText.setText(bundle.getString("EditorText")); isBundle = true; } }else if(bundle.getString("mode").equals("main")){ if(bundle != null){ isBundle = false; } } } //得到编辑框的数据和时间 public void dataAndDate(){ title = etTitle.getText().toString(); text = etText.getText().toString(); if(title.equals("")||text.equals("")){ Toast.makeText(this, "不能保存空值", Toast.LENGTH_SHORT).show(); }else{ final Calendar c = Calendar.getInstance(); int mYear = c.get(Calendar.YEAR); //获取当前年份 int mMonth = c.get(Calendar.MONTH);//获取当前月份 int mDay = c.get(Calendar.DAY_OF_MONTH);//获取当前月份的日期号码 int mHour = c.get(Calendar.HOUR_OF_DAY);//获取当前的小时数 int mMinute = c.get(Calendar.MINUTE);//获取当前的分钟数 date = "事件日期" + String.valueOf(mYear) + "-" + String.valueOf(mMonth) + "-" + String.valueOf(mDay) + "事件时间" + String.valueOf(mHour) + ":" + String.valueOf(mMinute); Log.e("date", date); } } //判断文本是否写入了数据库 private boolean isAdded() { dataAndDate(); try { mDatabaseManage.AddData(title, date , text); return true; } catch (Exception e) { e.printStackTrace(); return false; } } //判断文本是否修改成功 private boolean isUpdata(){ dataAndDate(); try { mDatabaseManage.UpData(getId, title, date, text); return true; } catch (Exception e) { e.printStackTrace(); return false; } } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0,0,0,"保存"); menu.add(0,1,1,"返回"); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int item_Id = item.getItemId(); switch (item_Id) { //保存菜单(文本保存后提示保存成功并进入查看这个文本的界面) case 0: long lookID; //判断是主界面还是显示界面发来的信息 if(!isBundle){ if(isAdded()){ Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show(); //得到最后一个数据的主键ID lookID = mDatabaseManage.curMoveToLast(); }else{ Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show(); break; } }else{ if(isUpdata()){ lookID = getId; Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(this, "修改失败", Toast.LENGTH_SHORT).show(); break; } } //新建一个事件查看的Intent的对象 Intent intent = new Intent(); //新建一个传送参数的bundle对象 Bundle bundle = new Bundle(); //把参数id放到bundle中传送 bundle.putLong("ID", lookID); //让intent携带这个bundle intent.putExtras(bundle); //指定intent要启动的类 intent.setClass(NotepadEditor.this, NotepadView.class); //启动一个新的Activity startActivity(intent); //清除bundle的参数 bundle.clear(); //关闭当前的Activity NotepadEditor.this.finish(); break; //返回菜单 case 1: //新建一个主界面的Intent的对象 Intent intent02 = new Intent(); //指定intent要启动的类 intent02.setClass(NotepadEditor.this, NotepadMain.class); //启动一个新的Activity startActivity(intent02); //关闭当前的Activity NotepadEditor.this.finish(); break; default: break; } return super.onOptionsItemSelected(item); } }

NotepadView.java

package com.geolo.android; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class NotepadView extends Activity{ TextView tvTitle,tvText; private TextView titleView,textView; private static long getID; DatabaseManage mDatabaseManage; private static String getTitle,getText; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(com.geolo.android.R.layout.noteview); tvTitle = (TextView)findViewById(com.geolo.android.R.id.title01); titleView = (TextView)findViewById(com.geolo.android.R.id.titleview); tvText = (TextView)findViewById(com.geolo.android.R.id.context02); textView = (TextView)findViewById(com.geolo.android.R.id.textview); //构造DatabaseManage对象来操作数据库 mDatabaseManage = new DatabaseManage(this); //创建一个bundle接收NotepadMain来的参数 Bundle bundle = this.getIntent().getExtras(); if(bundle.getLong("ID") != 0){ getID = bundle.getLong("ID"); gainData(getID); }else{ Log.e("bundle", "bundle bundle bundle"); } } //根据得到的ID增加数据 public void gainData(long id){ List<String> list = new ArrayList<String>(); list = mDatabaseManage.UpdataText(id); getTitle = list.get(0); getText = list.get(1); titleView.setText(getTitle); textView.setText(getText); } @Override public boolean onCreateOptionsMenu(Menu menu){ menu.add(0,0,0,"修改"); menu.add(0,1,1,"返回"); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int item_Id = item.getItemId(); switch (item_Id) { //修改菜单(到编辑界面并把原有的数据(文本)传送到编辑界面) case 0: //新建一个到编辑界面的Intent对象 Intent intent01 = new Intent(); //新建一个传送参数的bundle对象 Bundle bundle = new Bundle(); //把模式放到bundle中传送 bundle.putString("mode", "view"); //把参数id放到bundle中传送 bundle.putLong("EditorId", getID); //把事件标题放到bundle中传送 bundle.putString("EditorTitle", getTitle); //把事件内容放到bundle中传送 bundle.putString("EditorText", getText); //让intent携带这个bundle intent01.putExtras(bundle); //指定intent要启动的类 intent01.setClass(NotepadView.this, NotepadEditor.class); //启动一个新的Activity startActivity(intent01); //关闭当前的Activity NotepadView.this.finish(); break; //返回菜单 case 1: //新建一个主界面的Intent的对象 Intent intent02 = new Intent(); //指定intent要启动的类 intent02.setClass(NotepadView.this, NotepadMain.class); //启动一个新的Activity startActivity(intent02); //关闭当前的Activity NotepadView.this.finish(); break; default: break; } return super.onOptionsItemSelected(item); } }

DatabaseManage.java

package com.geolo.android; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.database.Cursor; import android.widget.ListAdapter; import android.widget.SimpleCursorAdapter; public class DatabaseManage { public static long id; public static String title, date, text; DatabaseMethod mDatabaseMethod; private Context mContext; public DatabaseManage(Context context){ mContext = context; //构造DatabaseMethod对象 mDatabaseMethod = new DatabaseMethod(mContext); //取得数据库对象 mDatabaseMethod.open(); } //更新一条数据 public void UpData(long ida, String titlea, String datea, String texta){ mDatabaseMethod.updateData(ida, titlea, datea, texta); } //向表中添加一条数据 public void AddData(String mTitle, String mDate, String mText){ mDatabaseMethod.insertData(mTitle, mDate, mText); } //向表中删除指定的一条数据 public void DeleteData(long rowId){ //删除数据 mDatabaseMethod.deleteData(rowId); } public long allIdCount(){ Cursor cur = mDatabaseMethod.fetchAllData(); long l = cur.getCount(); return l; } //把cursor移动到最后一个数据,得到最后一个数据的id public long curMoveToLast(){ Cursor cur = mDatabaseMethod.fetchAllData(); if(cur != null){ if(cur.moveToLast()){ int lastIdColumn = cur.getColumnIndex("_id"); int lastId = cur.getInt(lastIdColumn); return lastId; } } return 0; } //给主界面用来更新的视图列表(事件标题和事件日期) public ListAdapter UpdataAdapter(){ //获取数据库note的cursor Cursor cur = mDatabaseMethod.fetchAllData(); if(cur != null && cur.getCount() >= 0 ){ //ListAdapter是ListView和后台数据的桥梁 ListAdapter adapter = new SimpleCursorAdapter(mContext, //表示每一行包含两个数据项 android.R.layout.simple_list_item_2, //数据库的cursor对象 cur, //从数据库的table_title和table_date两列中取得数据 new String[]{DatabaseMethod.KEY_TITLE , DatabaseMethod.KEY_DATE}, //与title和date对应的Views new int[]{android.R.id.text1 , android.R.id.text2}); //取得数据成功返回ListAdapter对象 return adapter; } //取得数据失败返回空值。 return null; } //给显示界面用来更新的指定数据(事件标题和事件内容) public List<String> UpdataText(long rowId){ List<String> list = new ArrayList<String>(); //获取数据库的cursor Cursor cur = mDatabaseMethod.fetchAllTitleAndText(rowId); if(cur != null && cur.getCount() >= 0 ){ title = cur.getString(cur.getColumnIndex("_title")); text = cur.getString(cur.getColumnIndex("_text")); list.add(title); list.add(text); //取得数据成功返回List对象 return list; } //取得数据失败返回空值 return null; } }

DatabaseMethod.java

package com.geolo.android; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseMethod { //用于打印log //private static final String TAG = "DatabaseMethod"; //表中一条事件的id public static final String KEY_ID = "_id"; //表中一条事件的标题 public static final String KEY_TITLE = "_title"; //表中一条事件的创建日期和时间等 public static final String KEY_DATE = "_date"; //表中一条事件的内容 public static final String KEY_TEXT = "_text"; //数据库的名称为GeoloNotepad.db private static final String DB_NAME = "GeoloNotepad.db"; //数据库表名 private static final String DB_TABLE ="Notepad"; //数据库的版本 private static final int DB_VERSIOIN = 1; //本地context对象 private Context mContext = null; //创建一个事件表的sql语句 private static final String DB_CREATE = "CREATE TABLE " + DB_TABLE + " (" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_TITLE + " TEXT," + KEY_DATE + " DATE," + KEY_TEXT + " TEXT)"; //执行open()打开数据库时,保存返回的数据库对象 private SQLiteDatabase mSQLiteDatabase = null; //由SQLiteOpenHelper继承过来 private DatabaseHelper mDatabaseHelper = null; //构建DatabaseHelper类 private static class DatabaseHelper extends SQLiteOpenHelper{ /*构造函数-创建一个数据库*/ public DatabaseHelper(Context context) { /*当调用getWritableDatabase()或getReadableDatabase()方法时则创建一个数据库*/ super(context, DB_NAME, null, DB_VERSIOIN); } //创建一个表 @Override public void onCreate(SQLiteDatabase db) { // 数据库没有表时创建一个 db.execSQL(DB_CREATE); } //升级数据库 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS notes"); onCreate(db); } } //构造函数-取得context public DatabaseMethod(Context context){ mContext = context; } //打开数据库,返回数据库对象 public void open() throws SQLException{ mDatabaseHelper = new DatabaseHelper(mContext); mSQLiteDatabase = mDatabaseHelper.getWritableDatabase(); } //关闭数据库 public void close(){ mDatabaseHelper.close(); } //插入一条数据 public long insertData(String _title, String _date, String _text){ ContentValues initialValues = new ContentValues(); initialValues.put(KEY_TITLE, _title); initialValues.put(KEY_DATE, _date); initialValues.put(KEY_TEXT, _text); return mSQLiteDatabase.insert(DB_TABLE, KEY_ID, initialValues); } //删除一条数据 public boolean deleteData(long rowId){ return mSQLiteDatabase.delete(DB_TABLE, KEY_ID + "=" + rowId, null)>0; } //通过cursor查询所有数据 public Cursor fetchAllData(){ return mSQLiteDatabase.query(DB_TABLE, new String[]{KEY_ID,KEY_TITLE,KEY_DATE,KEY_TEXT}, null, null, null, null, null); } //查询指定 事件标题和时间的数据(用在主界面) public Cursor fetchAllTitleAndDate(long rowId) throws SQLException{ Cursor mCursor = mSQLiteDatabase.query(true, DB_TABLE, new String[]{KEY_ID,KEY_TITLE,KEY_DATE,KEY_TEXT}, KEY_ID + "=" + rowId, null, null, null, null, null); if(mCursor != null){ mCursor.moveToFirst(); } return mCursor; } //查询指定事件 标题和内容的数据(用在事件查看界面) public Cursor fetchAllTitleAndText(long rowId) throws SQLException{ Cursor mCursor = mSQLiteDatabase.query(true, DB_TABLE, new String[]{KEY_ID,KEY_TITLE,KEY_DATE,KEY_TEXT}, KEY_ID + "=" + rowId, null, null, null, null, null); if(mCursor != null){ mCursor.moveToFirst(); } return mCursor; } //更新一条数据 public boolean updateData(long rowId, String _title, String _date, String _text){ ContentValues args = new ContentValues(); args.put(KEY_TITLE, _title); args.put(KEY_DATE, _date); args.put(KEY_TEXT, _text); return mSQLiteDatabase.update(DB_TABLE, args, KEY_ID + "=" + rowId, null) > 0; } }

很辛苦看完了吧,源码下载地址http://download.csdn.net/source/2241357

更多相关文章

  1. 四、View的事件体系
  2. 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent()
  3. Android 遇坑【2】 - ScrollView 嵌套 ListView 时ListView数据
  4. Android中SQLite数据库操作(2)——SQLiteOpenHelper类
  5. 解决Android横竖屏切换数据丢失问题
  6. Android学习07-----事件处理(3)监听日期与时间的改变_焦点事件_
  7. Android studio cmd命令行操作数据库文件导出,导入
  8. android Sipnner点击相同Item不响应OnItemSelected事件
  9. Fiddler 跟踪 Android 数据包

随机推荐

  1. Android开发者必备的42个链接
  2. HAXM is not working and emulator runs
  3. Android应用层View绘制流程与源码分析
  4. Android(安卓)客服端集成高德定位功能(And
  5. android开发-使用Dialog AlertDialog
  6. Android应用程序包解析过程浅析
  7. Android(安卓)WebView的缓存
  8. Android(安卓)Launcher分析和修改2——Ic
  9. Android客户端与PC服务端、android服务端
  10. Android手势使用之 GestureDetector