สำหรับฐานข้อมูลก็จะประกอบด้วยหน้าหลักๆด้วยกันดังนี้
หน้าเมนูหลัก
หน้าดูข้อมูล
หน้าเพิ่มข้อมูล
หน้าแก้ไขและลบข้อมูล
(เหมือนกับหน้าดูข้อมูลแต่กดเพื่อแก้ไขได้)
กดเพื่อลบ
กดเพื่อแก้ไข
หมายเหตุ - สำหรับโค๊ด เนื่องจากแต่ละแถวจะยาวมากเกินไป ตัดคำขึ้นบรรทัดใหม่ไม่ได้ เลยลงไปทั้งอย่างนั้นเลยนะ
ก่อนอื่นก็พูดถึงหน้าข้อมูลก่อน ซึ่งไม่มีอะไรมาก แค่ Button สามตัวที่ Intent ไปแต่ละหน้าตามที่กำหนดไว้
Main.java
package app.akexorcist.studentdatabase;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Main extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DatabaseStudent mHelper = new DatabaseStudent(this);
SQLiteDatabase mDb = mHelper.getWritableDatabase();
mHelper.close();
mDb.close();
Button buttonView = (Button)findViewById(R.id.buttonView);
buttonView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), ViewStudent.class);
startActivity(intent);
}
});
Button buttonAdd = (Button)findViewById(R.id.buttonAdd);
buttonAdd.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), AddStudent.class);
startActivity(intent);
}
});
Button buttonEdit = (Button)findViewById(R.id.buttonEdit);
buttonEdit.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), EditStudent.class);
startActivity(intent);
}
});
}
}
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/buttonView"
android:layout_width="100dp"
android:layout_height="70dp"
android:layout_margin="10dp"
android:text="View Student" />
<Button
android:id="@+id/buttonAdd"
android:layout_width="100dp"
android:layout_height="70dp"
android:layout_margin="10dp"
android:text="Add Student" />
<Button
android:id="@+id/buttonEdit"
android:layout_width="100dp"
android:layout_height="70dp"
android:layout_margin="10dp"
android:text="Edit Student" />
</LinearLayout>
ต่อมาก็คือคลาสฐานข้อมูล ซึ่งก็คงไม่มีอะไรต้องอธิบายมากเช่นกัน หลักๆเลยก็คือ ฐานข้อมูลชื่อว่า MyStudent เป็นฐานข้อมูลเวอร์ชัน 1 กำหนดชื่อตารางว่า Student โดยประกอบด้วย 4 คอลัมน์หลักๆคือ _id, name, last_name และ school ที่เพิ่มฐานข้อมูลไว้แล้วตัวนึง
DatabaseStudent.java
package app.akexorcist.studentdatabase;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
class DatabaseStudent extends SQLiteOpenHelper {
private static final String DB_NAME = "MyStudent";
private static final int DB_VERSION = 1;
public static final String TABLE_NAME = "Student";
public static final String COL_NAME = "name";
public static final String COL_LASTNAME = "last_name";
public static final String COL_SCHOOL = "school";
public DatabaseStudent(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COL_NAME + " TEXT, " + COL_LASTNAME + " TEXT, " + COL_SCHOOL + " TEXT);");
db.execSQL("INSERT INTO " + TABLE_NAME + " (" + COL_NAME + ", " + COL_LASTNAME + ", "
+ COL_SCHOOL + ") VALUES ('Sleeping'" + ", 'For Less', 'Android School');");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
ต่อมาก็คือหน้าสำหรับแสดงข้อมูลนักเรียนที่มีอยู่ โดยแสดงบน List View เหมือนตัวอย่างทั่วๆไปก็ใช้ Cursor ดึงข้อมูลมาทีละ Row จนครบ
ViewStudent.java
package app.akexorcist.studentdatabase;
import java.util.ArrayList;
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.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ViewStudent extends Activity {
DatabaseStudent mHelper;
SQLiteDatabase mDb;
Cursor mCursor;
ListView listStudent;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
mHelper = new DatabaseStudent(this);
mDb = mHelper.getReadableDatabase();
mCursor = mDb.rawQuery("SELECT * FROM " + DatabaseStudent.TABLE_NAME, null);
ArrayList<String> arr_list = new ArrayList<String>();
mCursor.moveToFirst();
while(!mCursor.isAfterLast() ){
arr_list.add("ชื่อ : " + mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_NAME))
+ "\t\t" + mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_LASTNAME))
+ "\nโรงเรียน : " + mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_SCHOOL)));
mCursor.moveToNext();
}
ArrayAdapter<String> adapterDir = new ArrayAdapter<String>(getApplicationContext(), R.layout.my_listview, arr_list);
listStudent = (ListView)findViewById(R.id.listStudent);
listStudent.setAdapter(adapterDir);
listStudent.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
mCursor.moveToPosition(arg2);
String name = mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_NAME));
String lastname = mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_LASTNAME));
String school = mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_SCHOOL));
AlertDialog.Builder builder = new AlertDialog.Builder(ViewStudent.this);
builder.setTitle("ข้อมูลนักเรียน");
builder.setMessage("ชื่อ : " + name + "\n\nนามสกุล : " + lastname + "\n\nโรงเรียน : " + school);
builder.setNeutralButton("OK", null);
builder.show();
}
});
}
public void onStop() {
super.onStop();
mHelper.close();
mDb.close();
}
}
view.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ListView
android:id="@+id/listStudent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp" />
</LinearLayout>
ต่อมาก็คือการเพิ่มข้อมูลลงในฐานข้อมูล ก็จะมี Edit Text ทั้งสามสำหรับใส่ชื่อ นามสกุล และโรงเรียน แล้วก็ Get ค่ามาเป็น String แล้วรวมลงในคำสั่ง INSERT
AddStudent.java
package app.akexorcist.studentdatabase;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class AddStudent extends Activity {
DatabaseStudent mHelper;
SQLiteDatabase mDb;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add);
mHelper = new DatabaseStudent(this);
mDb = mHelper.getWritableDatabase();
final EditText editName = (EditText)findViewById(R.id.editName);
final EditText editLastName = (EditText)findViewById(R.id.editLastName);
final EditText editSchool = (EditText)findViewById(R.id.editSchool);
Button buttonAdd = (Button)findViewById(R.id.buttonAdd);
buttonAdd.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String name = editName.getText().toString();
String lastname = editLastName.getText().toString();
String school = editSchool.getText().toString();
if(name.length() != 0 && lastname.length() != 0 && school.length() != 0 ) {
Cursor mCursor = mDb.rawQuery("SELECT * FROM " + DatabaseStudent.TABLE_NAME
+ " WHERE " + DatabaseStudent.COL_NAME + "='" + name + "'"
+ " AND " + DatabaseStudent.COL_LASTNAME + "='" + lastname + "'"
+ " AND " + DatabaseStudent.COL_SCHOOL + "='" + school + "'", null);
if(mCursor.getCount() == 0) {
mDb.execSQL("INSERT INTO " + DatabaseStudent.TABLE_NAME + " ("
+ DatabaseStudent.COL_NAME + ", " + DatabaseStudent.COL_LASTNAME
+ ", " + DatabaseStudent.COL_SCHOOL + ") VALUES ('" + name
+ "', '" + lastname + "', '" + school + "');");
editName.setText("");
editLastName.setText("");
editSchool.setText("");
Toast.makeText(getApplicationContext(), "เพิ่มข้อมูลนักเรียนเรียบร้อยแล้ว"
, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "คุณมีข้อมูลนักเรียนคนนี้อยู่แล้ว"
, Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getApplicationContext(), "กรุณาใส่ข้อมูลนักเรียนให้ครบทุกช่อง"
, Toast.LENGTH_SHORT).show();
}
}
});
}
public void onStop() {
super.onStop();
mHelper.close();
mDb.close();
}
}
add.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal" >
<requestFocus />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="30dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ชื่อ "
android:textSize="20sp" />
<EditText
android:id="@+id/editName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="นามสกุล "
android:textSize="20sp" />
<EditText
android:id="@+id/editLastName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="โรงเรียน "
android:textSize="20sp" />
<EditText
android:id="@+id/editSchool"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:singleLine="true" />
</LinearLayout>
<Button
android:id="@+id/buttonAdd"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:text="Add" />
</LinearLayout>
</LinearLayout>
ต่อมาก็คือหน้าแก้ไขข้อมูลนักเรียน ซึ่งจะมีรายชื่อนักเรียนแสดงบน List View ถ้าต้องการแก้ไขข้อมูลคนใดก็ให้กดที่แถวนั้นๆ ก็จะ Intent ไปหน้าแก้ไขข้อมูลอีกที แต่ถ้าต้องการลบข้อมูลทิ้งก็เพียงแค่กดค้างไว้ แล้วจะมี Dialog ขึ้นมาถามว่าจะลบหรือไม่
EditStudent.java
package app.akexorcist.studentdatabase;
import java.util.ArrayList;
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.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class EditStudent extends Activity {
DatabaseStudent mHelper;
SQLiteDatabase mDb;
Cursor mCursor;
ListView listStudent;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit);
}
public void onResume() {
super.onResume();
mHelper = new DatabaseStudent(this);
mDb = mHelper.getWritableDatabase();
mCursor = mDb.rawQuery("SELECT * FROM " + DatabaseStudent.TABLE_NAME, null);
listStudent = (ListView)findViewById(R.id.listStudent);
listStudent.setAdapter(updateListView());
listStudent.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
mCursor.moveToPosition(arg2);
String name = mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_NAME));
String lastname = mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_LASTNAME));
String school = mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_SCHOOL));
Intent intent = new Intent(getApplicationContext(), UpdateStudent.class);
intent.putExtra("NAME", name);
intent.putExtra("LASTNAME", lastname);
intent.putExtra("SCHOOL", school);
startActivity(intent);
}
});
listStudent.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
mCursor.moveToPosition(arg2);
AlertDialog.Builder builder = new AlertDialog.Builder(EditStudent.this);
builder.setTitle("ลบข้อมูลนักเรียน");
builder.setMessage("คุณต้องการลบข้อมูลนักเรียนคนนี้ใช่หรือไม่?");
builder.setPositiveButton("ใช่", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String name = mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_NAME));
String lastname = mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_LASTNAME));
String school = mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_SCHOOL));
mDb.execSQL("DELETE FROM " + DatabaseStudent.TABLE_NAME
+ " WHERE " + DatabaseStudent.COL_NAME + "='" + name + "'"
+ " AND " + DatabaseStudent.COL_LASTNAME + "='" + lastname + "'"
+ " AND " + DatabaseStudent.COL_SCHOOL + "='" + school + "';");
mCursor.requery();
listStudent.setAdapter(updateListView());
Toast.makeText(getApplicationContext(),"ลบข้อมูลนักเรียนเรียบร้อย"
, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("ไม่", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
return true;
}
});
}
public void onStop() {
super.onStop();
mHelper.close();
mDb.close();
}
public ArrayAdapter<String> updateListView() {
ArrayList<String> arr_list = new ArrayList<String>();
mCursor.moveToFirst();
while(!mCursor.isAfterLast()){
arr_list.add("ชื่อ : " + mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_NAME)) + "\t\t"
+ mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_LASTNAME)) + "\n"
+ "โรงเรียน : " + mCursor.getString(mCursor.getColumnIndex(DatabaseStudent.COL_SCHOOL)));
mCursor.moveToNext();
}
ArrayAdapter<String> adapterDir = new ArrayAdapter<String>(getApplicationContext()
, R.layout.my_listview, arr_list);
return adapterDir;
}
}
edit.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ListView
android:id="@+id/listStudent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp" >
</ListView>
</LinearLayout>
และสุดท้าย หน้าแก้ไขข้อมูลของเดิม ที่มาจาก Intent จากหน้า EditStudent โดยที่หน้านี้จะมี Edit Text อยู่สามตัวเหมือนหน้าเพิ่มข้อมูล แต่จะดึงข้อมูลนักเรียนคนที่ต้องการแก้ไขมาใส่ในช่องก่อน มีปุ่มกากบาทที่อยู่ขวามือของแต่ละแถวเพื่อลบข้อความใน Edit Text และเมื่อแก้ไขข้อมูลเสร็จแล้ว ทำการอัพเดทโดยค้นหาชื่อนักเรียนที่แก้ไข แล้วทำการแทนที่ด้วยข้อมูลใหม่ทับลงไปก็เป็นอันเรียบร้อย
UpdateStudent.java
package app.akexorcist.studentdatabase;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class UpdateStudent extends Activity {
DatabaseStudent mHelper;
SQLiteDatabase mDb;
Cursor mCursor;
String name, lastname, school;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.update);
name = getIntent().getExtras().getString("NAME");
lastname = getIntent().getExtras().getString("LASTNAME");
school = getIntent().getExtras().getString("SCHOOL");
mHelper = new DatabaseStudent(this);
mDb = mHelper.getWritableDatabase();
mCursor = mDb.rawQuery("SELECT * FROM " + DatabaseStudent.TABLE_NAME
+ " WHERE " + DatabaseStudent.COL_NAME + "='" + name + "'"
+ " AND " + DatabaseStudent.COL_LASTNAME + "='" + lastname + "'"
+ " AND " + DatabaseStudent.COL_SCHOOL + "='" + school + "'", null);
final EditText editName = (EditText)findViewById(R.id.editName);
editName.setText(name);
final EditText editLastName = (EditText)findViewById(R.id.editLastName);
editLastName.setText(lastname);
final EditText editSchool = (EditText)findViewById(R.id.editSchool);
editSchool.setText(school);
Button buttonUpdate = (Button)findViewById(R.id.buttonUpdate);
buttonUpdate.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String nameUpdate = editName.getText().toString();
String lastnameUpdate = editLastName.getText().toString();
String schoolUpdate = editSchool.getText().toString();
if(name.length() != 0 && lastname.length() != 0 && school.length() != 0 ) {
mDb.execSQL("UPDATE " + DatabaseStudent.TABLE_NAME + " SET "
+ DatabaseStudent.COL_NAME + "='" + nameUpdate + "', "
+ DatabaseStudent.COL_LASTNAME + "='" + lastnameUpdate + "', "
+ DatabaseStudent.COL_SCHOOL + "='" + schoolUpdate
+ "' WHERE " + DatabaseStudent.COL_NAME + "='" + name + "'"
+ " AND " + DatabaseStudent.COL_LASTNAME + "='" + lastname + "'"
+ " AND " + DatabaseStudent.COL_SCHOOL + "='" + school + "';");
Toast.makeText(getApplicationContext(), "แก้ไขข้อมูลนักเรียนเรียบร้อยแล้ว"
, Toast.LENGTH_SHORT).show();
finish();
} else {
Toast.makeText(getApplicationContext(), "กรุณาใส่ข้อมูลนักเรียนให้ครบทุกช่อง"
, Toast.LENGTH_SHORT).show();
}
}
});
Button buttonNameClear = (Button)findViewById(R.id.buttonNameClear);
buttonNameClear.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
editName.setText("");
}
});
Button buttonLastNameClear = (Button)findViewById(R.id.buttonLastNameClear);
buttonLastNameClear.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
editLastName.setText("");
}
});
Button buttonSchoolClear = (Button)findViewById(R.id.buttonSchoolClear);
buttonSchoolClear.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
editSchool.setText("");
}
});
}
public void onStop() {
super.onStop();
mHelper.close();
mDb.close();
}
}
update.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal" >
<requestFocus />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="30dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ชื่อ "
android:textSize="20sp" />
<EditText
android:id="@+id/editName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:textSize="20sp" />
<Button
android:id="@+id/buttonNameClear"
android:layout_width="40dp"
android:layout_height="40dp"
android:text="X" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="นามสกุล "
android:textSize="20sp" />
<EditText
android:id="@+id/editLastName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:textSize="20sp" />
<Button
android:id="@+id/buttonLastNameClear"
android:layout_width="40dp"
android:layout_height="40dp"
android:text="X" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="โรงเรียน "
android:textSize="20sp" />
<EditText
android:id="@+id/editSchool"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:textSize="20sp" />
<Button
android:id="@+id/buttonSchoolClear"
android:layout_width="40dp"
android:layout_height="40dp"
android:text="X" />
</LinearLayout>
<Button
android:id="@+id/buttonUpdate"
android:layout_width="90dp"
android:layout_height="80dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:text="Update" />
</LinearLayout>
</LinearLayout>
my_listview.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:cacheColorHint="#00000000"
android:drawSelectorOnTop="true"
android:text="aaaaa"
android:textColor="#000000"
android:textSize="20sp" />
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.akexorcist.studentdatabase"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="ViewStudent" />
<activity android:name="AddStudent" />
<activity android:name="EditStudent" />
<activity android:name="UpdateStudent" />
</application>
</manifest>
ก็คงไม่มีอะไรจะอธิบายมากนัก เพราะเน้นเป็นตัวอย่างมากกว่า อยากให้ผู้ที่หลงเข้ามาอ่านเอาไปดูเป็นตัวอย่างกันมากกว่า สำหรับผู้ที่หลงเข้ามาอ่านคนใดที่ต้องการไฟล์ตัวอย่าง สามารถดาวน์โหลดได้จาก Student Database [Google Drive]