快捷搜索:

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();         }     }   }

http://www.bkjia.com/Androidjc/770797.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/770797.htmlTechArticleAndroid数据库操作_表格显示 显示表格布局 首先需要一个主布局文件main.xml 复制代码 LinearLayout xmlns:android=http://schemas.android.com/apk/res/android a...

本文源自: AG88环亚

您可能还会对下面的文章感兴趣: