java:
package EX05_05.txt;
import android.R.anim;
import android.R.integer;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class EX05_05 extends Activity {
private ToDoDB mToDoDB;
private Cursor mCursor;
private EditText mEditText;
private ListView mListView;
private int _id;
protected final static int MENU_ADD = Menu.FIRST;
protected final static int MENU_EDIT = Menu.FIRST + 1;
protected final static int MENU_DELEST = Menu.FIRST + 2;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case MENU_ADD:
addTodo();
break;
case MENU_EDIT:
editTodo();
break;
case MENU_DELEST:
deleteTodo();
break;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, MENU_ADD, 0, "添加");
menu.add(Menu.NONE, MENU_EDIT, 0, "修改");
menu.add(Menu.NONE, MENU_DELEST, 0, "删除");
return true;
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initApp();
}
private void initApp() {
// TODO Auto-generated method stub
mEditText = (EditText)findViewById(R.id.EditText01);
mListView = (ListView)findViewById(R.id.ListView01);
mToDoDB = new ToDoDB(this);
mCursor = mToDoDB.select();
SimpleCursorAdapter adapter = new SimpleCursorAdapter
(this, android.R.layout.simple_list_item_1,
mCursor, new String[]{ToDoDB.FIELD_TEXT},
new int[]{R.id.ListView01});
mListView.setAdapter(adapter);
mEditText.setOnClickListener(new EditText.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mEditText.setText("");
}
});
mListView.setOnItemClickListener(new ListView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
mCursor.moveToPosition(arg2);
_id = mCursor.getInt(0);
mEditText.setText(mCursor.getString(1)+Integer.toString(_id));
}
});
mListView.setOnItemSelectedListener(new ListView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
SQLiteCursor sc = (SQLiteCursor)arg0.getSelectedItem();
_id = sc.getInt(0);
mEditText.setText(sc.getString(1)+Integer.toString(_id));
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
private void addTodo()
{
if (mEditText.getText().toString().equals("")) {
return;
}
mToDoDB.insert(mEditText.getText().toString());
mCursor.requery();
mListView.invalidateViews();
_id = 0;
mEditText.setText("");
}
private void editTodo()
{
if (mEditText.getText().toString().equals("")) {
return;
}
mToDoDB.update(_id, mEditText.getText().toString());
mCursor.requery();
mListView.invalidateViews();
_id = 0;
mEditText.setText("");
}
private void deleteTodo()
{
if (_id == 0) {
return;
}
mToDoDB.delete(_id);
mCursor.requery();
mListView.invalidateViews();
_id = 0;
}
}
ToDoDB.java:
package EX05_05.txt;
import android.content.ContentValues;
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 ToDoDB extends SQLiteOpenHelper{
private final static String DATABASE_NAME = "todo_db";
private final static String TABLE_NAME = "todo_table";
public final static String FIELD_ID = "_id";
public final static String FIELD_TEXT = "todo_text";
private final static int DATABASE_VISION = 1;
public ToDoDB(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VISION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = "CREATE TABLE " + TABLE_NAME + " (" + FIELD_ID
+ " INTEGER primary key autoincrement, " + " " +
FIELD_TEXT + " text)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
public Cursor select()
{
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query
(TABLE_NAME, null, null, null, null, null, null);
return cursor;
}
public long insert(String text)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(FIELD_TEXT, text);
return db.insert(TABLE_NAME, null, cv);
}
public void delete(int id)
{
SQLiteDatabase db = this.getWritableDatabase();
String whereClause = FIELD_ID + " =?";
String[] whereArgs = {Integer.toString(id)};
db.delete(TABLE_NAME, whereClause, whereArgs);
}
public void update(int id, String text)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(FIELD_TEXT, text);
String whereClause = FIELD_ID + " =?";
String[] whereArgs = {Integer.toString(id)};
db.update(TABLE_NAME, cv, whereClause, whereArgs);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/EditText01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
<ListView
android:id="@+id/ListView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ListView>
</LinearLayout>