Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android數據庫操作_表格顯示

Android數據庫操作_表格顯示

編輯:關於Android編程

Android數據庫操作_表格顯示 顯示表格布局       首先需要一個主布局文件main.xml       復制代碼 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="horizontal" >       <View         android:layout_width="0.5px"         android:layout_height="fill_parent"         android:background="#B8B8B8"         android:visibility="visible" />       <TextView         android:id="@+id/id"         android:layout_width="0dip"         android:layout_height="35dip"         android:layout_weight="2"         android:textColor="#CD3700"         android:textSize="20sp" />       <View         android:layout_width="0.5px"         android:layout_height="fill_parent"         android:background="#B8B8B8"         android:visibility="visible" />       <TextView         android:id="@+id/name"         android:layout_width="0dip"         android:layout_height="wrap_content"         android:layout_weight="3"         android:textColor="#000000"         android:textSize="17sp" />       <View         android:layout_width="0.5px"         android:layout_height="fill_parent"         android:background="#B8B8B8"         android:visibility="visible" />       <TextView         android:id="@+id/age"         android:layout_width="0dip"         android:layout_height="wrap_content"         android:layout_weight="1"         android:textColor="#000000"         android:textSize="17sp" />       <View         android:layout_width="0.5px"         android:layout_height="fill_parent"         android:background="#B8B8B8"         android:visibility="visible" />   </LinearLayout> 復制代碼 View起到的作用是在兩列之間起到分割的作用,縱觀這個布局文件,就是完成這樣的工作,設置一個表頭,將三個TextView放置在一個水平的線性布局中去,分別顯示一列的表頭,然後需要一個ListView與上述的線性布局一同放入一個垂直的線性布局中去,用來顯示每一條記錄。而每一條記錄的顯示需要我們來實現一個adapter去完成每一項的顯示,下面就完成這個項的布局文件:itemlayout.xml   復制代碼 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="horizontal" >       <View         android:layout_width="0.5px"         android:layout_height="fill_parent"         android:background="#B8B8B8"         android:visibility="visible" />       <TextView         android:id="@+id/id"         android:layout_width="0dip"         android:layout_height="35dip"         android:layout_weight="2"         android:textColor="#CD3700"         android:textSize="20sp" />       <View         android:layout_width="0.5px"         android:layout_height="fill_parent"         android:background="#B8B8B8"         android:visibility="visible" />       <TextView         android:id="@+id/name"         android:layout_width="0dip"         android:layout_height="wrap_content"         android:layout_weight="3"         android:textColor="#000000"         android:textSize="17sp" />       <View         android:layout_width="0.5px"         android:layout_height="fill_parent"         android:background="#B8B8B8"         android:visibility="visible" />       <TextView         android:id="@+id/age"         android:layout_width="0dip"         android:layout_height="wrap_content"         android:layout_weight="1"         android:textColor="#000000"         android:textSize="17sp" />       <View         android:layout_width="0.5px"         android:layout_height="fill_parent"         android:background="#B8B8B8"         android:visibility="visible" />   </LinearLayout> 復制代碼 在listview中每一項的布局應該是這樣的,需要View來分割每一列,然後需要TextView來顯示數據的信息,這些組件之間放在一個水平的線性布局中去。   這樣我們就完成了程序的主體布局。接下來我們需要一個適配器(adapter)來完成對listview中每一項的數據填入。SimpleCursorAdapter是一個簡單 的適配器,可以將cursor中的每一行的記錄映射到一個顯示的組件上一般是TextView或者是ImageView。那我們就繼承這個類來完成自己的adapter。   下面是我們的adapter它繼承了SimpleCursorAdapter。   復制代碼 package com.example.gird;   import android.content.Context; import android.database.Cursor; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.SimpleCursorAdapter;   public class MySimpleCursorAdapter extends SimpleCursorAdapter {       public MySimpleCursorAdapter(Context context, int layout, Cursor c,             String[] from, int[] to) {         super(context, layout, c, from, to);     }       @Override     public View getView(int position, View convertView, ViewGroup parent) {           View view = null;         if (convertView != null) {             view = convertView;           } else {             view = super.getView(position, convertView, parent);           }   /*author:conowen   * date:2012.4.2   * MySimpleCursorAdapter   */           int[] colors = { Color.WHITE, Color.rgb(219, 238, 244) };// RGB顏色           view.setBackgroundColor(colors[position % 2]);// 每隔item之間顏色不同           return super.getView(position, view, parent);     }   } 復制代碼 在其中完成的主要是對getView方法的重寫。position當前由不可見到可見的項的位置,convertView就是要顯示的組件項,這個時候Android不會每次都去實例化一個新的view對象,而是去看在緩存中是否存在一個這樣的對象,若有就直接拿來,若沒有才會去實例化新的對象。而parent是告訴這些個項最終會依附在哪一個父親組件上去(Listview)。 復制代碼 package com.example.gird;   import android.app.Activity; import android.app.AlertDialog; import android.content.ContentValues; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.database.Cursor; import android.database.sqlite.SQLiteCursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView;   public class GridActivity extends Activity {       public int DB_VERSION = 1;     SQLiteDatabase db;     // DbHelper類在DbHelper.java文件裡面創建的     ListView lv;       @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         // 建立打開數據庫         db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null);         db.execSQL("DROP TABLE IF EXISTS person");         // 創建person表         db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");           // 插入數據         for (int i = 0; i < 20; i++) {             Person person = new Person();             person.name = "john" + i;             person.age = 30 - i;             db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", new Object[] {                     person.name, person.age });         }           lv = (ListView) findViewById(R.id.lv);         updatelistview();         // 添加一個長按事件         lv.setOnItemLongClickListener(new OnItemLongClickListener() {               @Override             public boolean onItemLongClick(AdapterView<?> parent, View view,                     final int position, long id) {                 // 實例化一個彈出框                 new AlertDialog.Builder(GridActivity.this)                         .setTitle("選擇操作")                         .setItems(new String[] { "更新", "刪除", "取消" },                                 // 為彈出框上的選項添加事件                                 new OnClickListener() {                                       @Override                                     public void onClick(DialogInterface dialog,                                             int which) {                                         switch (which) {                                         //  表示更新內容                                         case 0:                                             LayoutInflater inflater = getLayoutInflater();                                             // 自定義一個彈出口布局                                             final View layout = inflater                                                     .inflate(                                                             R.layout.dialog,                                                             (ViewGroup) findViewById(R.id.dialog));                                             EditText nameTxt = (EditText) layout                                                     .findViewById(R.id.editText1);                                             TextView ageTxt = (EditText) layout                                                     .findViewById(R.id.editText2);                                             SQLiteCursor s_old = (SQLiteCursor) lv                                                     .getItemAtPosition(position);                                             final int _id_old = s_old.getInt(s_old                                                     .getColumnIndex("_id"));                                             final String name_old = s_old.getString(s_old                                                     .getColumnIndex("name"));                                             final String age_old = s_old.getString(s_old                                                     .getColumnIndex("age"));                                               nameTxt.setText(name_old);                                             ageTxt.setText(age_old);                                                                                          new AlertDialog.Builder(                                                     GridActivity.this)                                                     .setTitle("更新")                                                     .setView(layout)                                                     .setPositiveButton(                                                             "確定",                                                             new OnClickListener() {                                                                   @Override                                                                 public void onClick(                                                                         DialogInterface dialog,                                                                         int which) {                                                                     ContentValues cv = new ContentValues();                                                                     String temp_name = ((EditText) layout                                                                             .findViewById(R.id.editText1))                                                                             .getText()                                                                             .toString();                                                                     String temp_age = ((EditText) layout                                                                             .findViewById(R.id.editText2))                                                                             .getText()                                                                             .toString();                                                                       cv.put("_id",                                                                             _id_old);                                                                     cv.put("name",                                                                             temp_name);                                                                     cv.put("age",                                                                             temp_age);                                                                       String[] id_index = { String                                                                             .valueOf(_id_old) };                                                                     db.update(                                                                             "person",                                                                             cv,                                                                             "_id=?",                                                                             id_index);                                                                     updatelistview();                                                                 }                                                             })                                                     .setNegativeButton("取消",                                                             null).show();                                             break;                                         // 刪除記錄                                         case 1:                                             // getItemAtPosition()得到一個item裡的數據                                             SQLiteCursor s = (SQLiteCursor) lv                                                     .getItemAtPosition(position);                                             final int _id = s.getInt(s                                                     .getColumnIndex("_id"));                                             String name = s.getString(s                                                     .getColumnIndex("name"));                                             Log.i("id ::", _id + "");                                             new AlertDialog.Builder(                                                     GridActivity.this)                                                     .setTitle(                                                             "確定刪除" + name                                                                     + "嗎?")                                                     .setPositiveButton(                                                             "確定",                                                             new OnClickListener() {                                                                   @Override                                                                 public void onClick(                                                                         DialogInterface dialog,                                                                         int which) {                                                                     db.execSQL(                                                                             "delete from person where _id =?",                                                                             new Integer[] { _id });                                                                     updatelistview();                                                                 }                                                             })                                                     .setNegativeButton(                                                             "取消",                                                             new OnClickListener() {                                                                   @Override                                                                 public void onClick(                                                                         DialogInterface dialog,                                                                         int which) {                                                                 }                                                             }).show();                                             break;                                         // 取消操作                                         case 2:                                             break;                                         }                                     }                                 }).show();                   return false;             }           });     }       // 更新listview     public void updatelistview() {         Cursor cr = db.query("person", null, null, null, null, null, null);           String id = cr.getColumnName(0);         String name = cr.getColumnName(1);         String age = cr.getColumnName(2);         String[] ColumnNames = { id, name, age };           ListAdapter adapter = new MySimpleCursorAdapter(this,                 R.layout.listviewlayout, cr, ColumnNames, new int[] { R.id.id,                         R.id.name, R.id.age });           lv.setAdapter(adapter);     }       @Override     protected void onPause() {         onDestroy();         Log.i("message", "數據庫連接銷毀");         super.onPause();     }       @Override     protected void onDestroy() {// 關閉數據庫         super.onDestroy();         if (db != null) {             db.close();         }     }   }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved