日记本开发
虽然过程很曲折,但也还是跌跌撞撞写出来了
第一次写,代码写的很乱七八糟,不要介意。。这个真的是在练练手,开始奋斗java4android
1.控制listView的代码
package com.my; import static com.my.MyOpenHelper.DB_NAME; import java.util.ArrayList; import java.util.HashMap; import android.R.color; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; public class Two extends Activity{ private MyOpenHelper db; private String tit; private String dat; private String con; private String wea; private int id; int i=0; int temp[] = new int [2000]; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.index); ListView list=(ListView)findViewById(R.id.listView); //注册上下文 registerForContextMenu(list); db = new MyOpenHelper(getApplicationContext(),DB_NAME); //动态数组 ArrayList<HashMap<String,Object>> li=new ArrayList<HashMap<String,Object>>(); Cursor cursor =db.query(); while(cursor.moveToNext()){ HashMap<String,Object> item = new HashMap<String,Object>(); temp[i++] = cursor.getInt(cursor.getColumnIndex("d_id")); item.put("d_title", cursor.getString(cursor.getColumnIndex("d_title"))); item.put("d_image", cursor.getString(cursor.getColumnIndex("d_image"))); item.put("d_data", cursor.getString(cursor.getColumnIndex("d_data"))); item.put("d_content", cursor.getString(cursor.getColumnIndex("d_content"))); li.add(item); } cursor.close(); SimpleAdapter adatper=new SimpleAdapter(Two.this, li, R.layout.list_adapter, new String[]{"d_image","d_title","d_data"}, new int[]{R.id.item_image,R.id.item_title,R.id.item_data}); list.setAdapter(adatper); list.setCacheColorHint(color.transparent); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //Toast.makeText(Two.this, "你点击了"+arg2+"行", 1000).show(); // TODO Auto-generated method stub //获取选中的日记 HashMap<String,Object> item = (HashMap<String,Object>) arg0.getItemAtPosition(arg2); Intent intent = new Intent(Two.this, Note_read.class); tit=String.valueOf(item.get("d_title")); wea=String.valueOf(item.get("d_image")); dat=String.valueOf(item.get("d_data")); con=String.valueOf(item.get("d_content")); intent.putExtra("_ID", temp[arg2]); intent.putExtra("TIT", tit); intent.putExtra("DAT", dat); intent.putExtra("WEA", wea); intent.putExtra("CON", con); startActivity(intent); finish(); } }); list.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3) { // TODO Auto-generated method stub new AlertDialog.Builder(Two.this) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub SQLiteDatabase mdb = db.getWritableDatabase(); mdb.delete("d_table", "d_id=?", new String [] {temp[arg2]+""}); mdb.close(); Toast.makeText(Two.this, "第"+temp[arg2]+"只被撕掉了。。", 1000).show(); Intent intent = new Intent(Two.this,Two.class); startActivity(intent); finish(); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).setTitle("你删个试试?!").create().show(); return false; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case R.id.insertId: Intent intent=new Intent(Two.this,WrActivity.class); intent.putExtra("cmd", 1); startActivity(intent); finish(); break; case R.id.exitId: finish(); android.os.Process.killProcess(android.os.Process.myPid()); } return super.onOptionsItemSelected(item); } }
本来应该要申明一个日记类implements Serializable
但是在Activity之间传递信息的时候出错了...我就直接丢弃了,呵呵
以及在修改删除数据库的时候,提取primary key的方法貌似有点复杂,就直接申明一个数组保存了,也真是醉了。。
2.查看日记.class
package com.my; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class Note_read extends Activity{ public EditText wea; //天气 public EditText tit; //标题 public EditText cont; //内容 public TextView dat; //日期 private String d_wea; private String d_tit; private String d_con; private String d_dat; private int d_id; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.read); wea = (EditText)findViewById(R.id.image); tit = (EditText)findViewById(R.id.edit_10); cont = (EditText)findViewById(R.id.editView2); dat = (TextView)findViewById(R.id.editText1); Button b1 = (Button)findViewById(R.id.queding); Button b2 = (Button)findViewById(R.id.quxiao0); Intent intent = this.getIntent(); d_id = intent.getExtras().getInt("_ID"); d_tit = intent.getStringExtra("TIT"); d_dat = intent.getStringExtra("DAT"); d_con = intent.getStringExtra("CON"); d_wea = intent.getStringExtra("WEA"); loadDiaryData(); setEditTextDisable(); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(Note_read.this, WrActivity.class); intent.putExtra("t_ID", d_id); intent.putExtra("t_TIT", d_tit); intent.putExtra("t_DAT", d_dat); intent.putExtra("t_WEA", d_wea); intent.putExtra("t_CON", d_con); intent.putExtra("cmd", 0); startActivity(intent); finish(); } }); b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(Note_read.this,Two.class); startActivity(intent); finish(); } }); } public void setEditTextDisable() { // TODO Auto-generated method stub wea.setText(d_wea); tit.setText(d_tit); dat.setText(d_dat); cont.setText(d_con); } public void loadDiaryData() { // TODO Auto-generated method stub wea.setEnabled(false); dat.setEnabled(false); cont.setEnabled(false); tit.setEnabled(false); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
绑定了写日记的xml
3.写日记.class
package com.my; import java.text.SimpleDateFormat; import static com.my.MyOpenHelper.*; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class WrActivity extends Activity{ int status = -1; int id = -1; private EditText tianqi; //天气 private EditText edit_1; //标题 private TextView editView; //日期 private EditText editText; //内容 private int Id; private String Tit; private String Dat; private String Con; private String Wea; MyOpenHelper myHelper; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.write); Button button1=(Button)findViewById(R.id.queding); Button button2=(Button)findViewById(R.id.quxiao0); tianqi = (EditText)findViewById(R.id.image); edit_1 = (EditText) findViewById(R.id.edit_10); editView = (TextView)findViewById(R.id.editText1); editText = (EditText)findViewById(R.id.editView2); SimpleDateFormat dataFormat=new SimpleDateFormat("yyyy-MM-dd"); editView.setText(dataFormat.format(new java.util.Date())); myHelper = new MyOpenHelper(this, DB_NAME,null,1); SQLiteDatabase db = myHelper.getReadableDatabase(); Intent intent = getIntent(); Id = intent.getExtras().getInt("t_ID"); Tit = intent.getStringExtra("t_TIT"); Dat = intent.getStringExtra("t_DAT"); Con = intent.getStringExtra("t_CON"); Wea = intent.getStringExtra("t_WEA"); status = intent.getExtras().getInt("cmd"); if(status == 0){ tianqi.setText(Wea); edit_1.setText(Tit); editView.setText(Dat); editText.setText(Con); } button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String a = edit_1.getEditableText().toString().trim(); String b = editText.getEditableText().toString().trim(); if(a.equals("")||b.equals("")){ Toast.makeText(WrActivity.this, "请输入标题和内容", 1000).show(); return ; } switch(status){ case 0: updata(); break; case 1: insert(); break; } Intent intent = new Intent(WrActivity.this,Two.class); intent.putExtra("id", MyOpenHelper.DB_NAME.indexOf(id)); startActivity(intent); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(WrActivity.this,Two.class); startActivity(intent); } }); } public void updata(){ SQLiteDatabase db = myHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("d_title", edit_1.getText().toString()); values.put("d_image", tianqi.getText().toString()); values.put("d_data", editView.getText().toString()); values.put("d_content",editText.getText().toString()); db.update("d_table", values, "d_id=?", new String []{Id+""}); db.close(); } public void insert (){ SQLiteDatabase db = myHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("d_title", edit_1.getText().toString()); values.put("d_image", tianqi.getText().toString()); values.put("d_data", editView.getText().toString()); values.put("d_content",editText.getText().toString()); db.insert("d_table",null,values); db.close(); } }
4.最后是数据库类
package com.my; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class MyOpenHelper extends SQLiteOpenHelper{ public final static String DB_NAME = "db_name"; public final static String TABLE_NAME = "d_table"; public final static int VERSION=1; public final static String ID = "d_id"; public final static String TITLE = "d_title"; public final static String CONTENT = "d_content"; public final static String IMAGE = "d_image"; public final static String DATATIME = "d_data"; public MyOpenHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } public MyOpenHelper(Context context, String name) { super(context, name,null,VERSION); // TODO Auto-generated constructor stub } public MyOpenHelper(Context context, String name,int version) { super(context, name, null, version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("create table d_table(d_id integer primary key autoincrement,d_title text,d_image text,d_data varchar(20),d_content text);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub System.out.println("updata"); } public Cursor query(){ SQLiteDatabase db = getWritableDatabase(); Cursor cursor = db.query("d_table", null, null, null, null, null, null); return cursor; } }
嗯,代码写的相当的乱,大神看了以后勿喷~
作者:pngcui
博客园:http://www.cnblogs.com/pngcui/
github:https://github.com/pngcui
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。