設計一個簡單記事本 , 按下Add時將EditText裡的值寫到資料庫中(MY_DB) , 新增成功後將值顯示在下方的 ListView , 點選到ListView任一筆的資料時將值帶入EditText並可Update或是Delete , 程式碼如下。
package COM.TQC.GDD02;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckedTextView;
import android.widget.EditText;
import android.widget.ListView;
public class GDD02 extends Activity
{
private static final String DBNAME = "MY_DB";
private static final String TABLENAME = "MY_TABLE";
private static final String FIELD01_NAME = "_id";
private static final String FIELD02_NAME = "_text1";
private SQLiteDatabase dataBase;
private android.database.Cursor cursor;
private int _id = -1;
private EditText EditText01;
private Button Button01;
private Button Button02;
private Button Button03;
private ListView ListView01;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText01 = (EditText) findViewById(R.id.EditText01);
Button01 = (Button) findViewById(R.id.BtnAdd);
Button02 = (Button) findViewById(R.id.BtnUpdate);
Button03 = (Button) findViewById(R.id.BtnDelete);
ListView01 = (ListView) findViewById(R.id.ListView01);
Button02.setEnabled(false);
Button03.setEnabled(false);
String CREATE_SQL = "create table if not exists "+TABLENAME+" ("+FIELD01_NAME+" INTEGER PRIMARY KEY, "+FIELD02_NAME+" TEXT)";
dataBase = this.openOrCreateDatabase(DBNAME , MODE_PRIVATE , null);
dataBase.execSQL(CREATE_SQL);
updateAdapter();
//Update ListView
Button01.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
if(!EditText01.getText().equals(""))
{
insert(EditText01.getText().toString());
}
}});
Button02.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
if(_id!=-1 && !EditText01.getText().equals(""))
{
update(_id, EditText01.getText().toString());
Button02.setEnabled(false);
Button03.setEnabled(false);
}
}});
Button03.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
if(_id!=-1)
{
delete(_id);
Button02.setEnabled(false);
Button03.setEnabled(false);
}
}});
ListView01.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(android.widget.AdapterView arg0,
View arg1, int arg2, long arg3)
{
// TODO Auto-generated method stub
_id = (int) arg3;
//arg3 is Primary Key, not arg2
EditText01.setText(((CheckedTextView)arg1.findViewById(R.id.CheckedTextView01)).getText());
Button02.setEnabled(true);
Button03.setEnabled(true);
Log.d("Test", "The position of the view in the adapter arg2:"+arg2);
Log.d("Test", "The row id of the item that was clicked arg3:"+arg3);
}});
}
private void insert(String text)
{
dataBase.execSQL("INSERT INTO "+TABLENAME+" ("+FIELD02_NAME+") "+"values ('"+text+"')");
updateAdapter();
EditText01.setText("");
}
private void update(int id,String text)
{
dataBase.execSQL("UPDATE "+TABLENAME+" SET "+FIELD02_NAME+"='"+text+"' WHERE "+FIELD01_NAME+"="+id);
updateAdapter();
EditText01.setText("");
}
private void delete(int id)
{
dataBase.execSQL("DELETE FROM "+TABLENAME+" WHERE "+FIELD01_NAME+"="+id);
updateAdapter();
Log.d("Test", "id:"+id);
if(cursor.getCount()==0) _id=-1;
}
private void updateAdapter()
{
cursor = dataBase.rawQuery("SELECT * FROM "+TABLENAME, null);
android.widget.SimpleCursorAdapter adapter = new android.widget.SimpleCursorAdapter(this, R.layout.list,
cursor, new String[]
{ FIELD02_NAME }, new int[]
{ R.id.CheckedTextView01 });
//R.layout.list 代表每一個Row view 的xml定義檔
ListView01.setAdapter(adapter);
}
@Override
protected void onDestroy()
{
// TODO Auto-generated method stub
cursor.close();
dataBase.close();
super.onDestroy();
}
}
接下來是main.xml
還有ListView中Row View的定義檔 list.xml
P.S. 題目中所要求的Variable和Method皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....


請問您可以幫忙開發android程式嗎 tpc2002@gmail.com
回覆刪除