网络小飞

  ------墨菲定律

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

【转】Android中结合OrmLite for android组件对SQLite的CRUD(增删改查)操作实例

本文中曾经提到过Ormlite的第三方组件包,Ormlite 是一种ORM工具,并且是一种轻量级别的工具。我们可以使用它来对Android中内嵌的sqlite数据库进行相关的操作。Android 的应用程序应使用 Ormlite for android 版本来进行相关的开发。Ormlite是对android提供的sqlite部分的API进行了封装。提供了更加方便的接口来供使用。

本文以一个学生的信息实例程序来展示如何使用ormlite for Android的第三方组件来开发Sqlite的C[增加],R[查询],U[更新],D[查询]应用程序,以便更方便的对sqlite数据库的操作。我们先看下程序的结构图:

【1】.程序结构图如下:

01

其中包com.andyidea.bean下Student.java为实体类,包com.andyidea.db下 DatabaseHelper.java为数据库辅助类,包com.andyidea.ormsqlite下的MainActivity.java和 StudentListActivity.java是界面信息类。同时我们别忘了在根目录下创建一个lib的文件夹,把第三方组件包ormlite-Android-4.31.jar ,ormlite-core-4.31.jar,ormlite-jdbc-4.31.jar放到lib文件夹下,然后在项目中引用这三个包就OK了。

【2】布局文件源码如下:

main.xml源码:

   1:   
   2:      <?xml version="1.0" encoding="utf-8"?>  
   3:      <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"  
   4:          Android:orientation="vertical"  
   5:          Android:layout_width="fill_parent"  
   6:          Android:layout_height="fill_parent"  
   7:          Android:padding="5dip">  
   8:          <TextView    
   9:          Android:layout_width="fill_parent"  android:layout_height="wrap_content"  
  10:          Android:gravity="center" android:text="ORMLite-AddPage"/>  
  11:          <LinearLayout  
  12:             Android:layout_width="fill_parent" android:layout_height="wrap_content"  
  13:             Android:orientation="horizontal" android:padding="1dip" android:gravity="center_vertical">  
  14:             <TextView   
  15:                Android:layout_width="wrap_content"  
  16:                Android:layout_height="wrap_content"  
  17:                Android:text="学号: "/>  
  18:             <EditText  
  19:                Android:id="@+id/stuno"  
  20:                Android:layout_width="fill_parent"  
  21:                Android:layout_height="wrap_content"/>  
  22:          </LinearLayout>  
  23:          <LinearLayout  
  24:             Android:layout_width="fill_parent" android:layout_height="wrap_content"  
  25:             Android:orientation="horizontal" android:padding="1dip" android:gravity="center_vertical">  
  26:             <TextView   
  27:                Android:layout_width="wrap_content"  
  28:                Android:layout_height="wrap_content"  
  29:                Android:text="姓名: "/>  
  30:             <EditText  
  31:                Android:id="@+id/name"  
  32:                Android:layout_width="fill_parent"  
  33:                Android:layout_height="wrap_content"/>  
  34:          </LinearLayout>  
  35:          <LinearLayout  
  36:             Android:layout_width="fill_parent" android:layout_height="wrap_content"  
  37:             Android:orientation="horizontal" android:padding="1dip" android:gravity="center_vertical">  
  38:             <TextView   
  39:                Android:layout_width="wrap_content"  
  40:                Android:layout_height="wrap_content"  
  41:                Android:text="年龄: "/>  
  42:             <EditText  
  43:                Android:id="@+id/age"  
  44:                Android:layout_width="fill_parent"  
  45:                Android:layout_height="wrap_content"/>  
  46:          </LinearLayout>  
  47:          <LinearLayout  
  48:             Android:layout_width="fill_parent" android:layout_height="wrap_content"  
  49:             Android:orientation="horizontal" android:padding="1dip" android:gravity="center_vertical">  
  50:             <TextView   
  51:                Android:layout_width="wrap_content"  
  52:                Android:layout_height="wrap_content"  
  53:                Android:text="性别: "/>  
  54:             <EditText  
  55:                Android:id="@+id/sex"  
  56:                Android:layout_width="fill_parent"  
  57:                Android:layout_height="wrap_content"/>  
  58:          </LinearLayout>  
  59:          <LinearLayout  
  60:             Android:layout_width="fill_parent" android:layout_height="wrap_content"  
  61:             Android:orientation="horizontal" android:padding="1dip" android:gravity="center_vertical">  
  62:             <TextView   
  63:                Android:layout_width="wrap_content"  
  64:                Android:layout_height="wrap_content"  
  65:                Android:text="分数: "/>  
  66:             <EditText  
  67:                Android:id="@+id/score"  
  68:                Android:layout_width="fill_parent"  
  69:                Android:layout_height="wrap_content"/>  
  70:          </LinearLayout>  
  71:          <LinearLayout  
  72:             Android:layout_width="fill_parent" android:layout_height="wrap_content"  
  73:             Android:orientation="horizontal" android:padding="1dip" android:gravity="center_vertical">  
  74:             <TextView   
  75:                Android:layout_width="wrap_content"  
  76:                Android:layout_height="wrap_content"  
  77:                Android:text="地址: "/>  
  78:             <EditText  
  79:                Android:id="@+id/address"  
  80:                Android:layout_width="fill_parent"  
  81:                Android:layout_height="wrap_content"/>  
  82:          </LinearLayout>  
  83:            
  84:      </LinearLayout>  

students.xml源码:

   1:  <?xml version="1.0" encoding="utf-8"?>  
   2:  <LinearLayout  
   3:    xmlns:Android="http://schemas.android.com/apk/res/android"  
   4:    Android:orientation="vertical"  
   5:    Android:layout_width="fill_parent"  
   6:    Android:layout_height="fill_parent">  
   7:    <TextView    
   8:      Android:layout_width="fill_parent"   
   9:      Android:layout_height="wrap_content"  
  10:      Android:gravity="center"  
  11:      Android:text="ORMLite-Students"/>  
  12:    <ListView  
  13:      Android:id="@+id/stulist"  
  14:      Android:layout_width="fill_parent"  
  15:      Android:layout_height="fill_parent"/>  
  16:  </LinearLayout> 

studentitem.xml源码:

   1:   
   2:      <?xml version="1.0" encoding="utf-8"?>  
   3:      <LinearLayout  
   4:        xmlns:Android="http://schemas.android.com/apk/res/android"  
   5:        Android:orientation="horizontal"  
   6:        Android:layout_width="fill_parent"  
   7:        Android:layout_height="fill_parent">  
   8:        <TextView  
   9:           Android:id="@+id/itemno"  
  10:           Android:layout_width="fill_parent"  
  11:           Android:layout_height="wrap_content"  
  12:           Android:layout_weight="1"  
  13:           Android:text="学号"  
  14:           Android:gravity="center"/>  
  15:        <TextView  
  16:           Android:id="@+id/itemname"  
  17:           Android:layout_width="fill_parent"  
  18:           Android:layout_height="wrap_content"  
  19:           Android:layout_weight="1"  
  20:           Android:text="姓名"  
  21:           Android:gravity="center"/>  
  22:        <TextView  
  23:           Android:id="@+id/itemscore"  
  24:           Android:layout_width="fill_parent"  
  25:           Android:layout_height="wrap_content"  
  26:           Android:layout_weight="1"  
  27:           Android:text="分数"  
  28:           Android:gravity="center"/>  
  29:      </LinearLayout>  

【3】包com.andyidea.bean下Student.java源码:

   1:  package com.andyidea.bean;  
   2:    
   3:  import java.io.Serializable;  
   4:  import com.j256.ormlite.field.DatabaseField;  
   5:    
   6:  public class Student implements Serializable {  
   7:    
   8:      private static final long serialVersionUID = -5683263669918171030L;  
   9:        
  10:      @DatabaseField(id=true)  
  11:      private String stuNO;  
  12:      @DatabaseField  
  13:      private String name;  
  14:      @DatabaseField  
  15:      private int age;  
  16:      @DatabaseField  
  17:      private String sex;  
  18:      @DatabaseField  
  19:      private double score;  
  20:      @DatabaseField  
  21:      private String address;  
  22:        
  23:      public String getStuNO() {  
  24:          return stuNO;  
  25:      }  
  26:      public void setStuNO(String stuNO) {  
  27:          this.stuNO = stuNO;  
  28:      }  
  29:        
  30:      public String getName() {  
  31:          return name;  
  32:      }  
  33:      public void setName(String name) {  
  34:          this.name = name;  
  35:      }  
  36:        
  37:      public int getAge() {  
  38:          return age;  
  39:      }  
  40:      public void setAge(int age) {  
  41:          this.age = age;  
  42:      }  
  43:        
  44:      public String getSex() {  
  45:          return sex;  
  46:      }  
  47:      public void setSex(String sex) {  
  48:          this.sex = sex;  
  49:      }  
  50:        
  51:      public double getScore() {  
  52:          return score;  
  53:      }  
  54:      public void setScore(double score) {  
  55:          this.score = score;  
  56:      }  
  57:        
  58:      public String getAddress() {  
  59:          return address;  
  60:      }  
  61:      public void setAddress(String address) {  
  62:          this.address = address;  
  63:      }  
  64:        
  65:  }  

 

【4】包com.andyidea.db下DatabaseHelper.java源码:

   1:   
   2:      package com.andyidea.db;  
   3:        
   4:      import java.sql.SQLException;  
   5:        
   6:      import Android.content.Context;  
   7:      import Android.database.sqlite.SQLiteDatabase;  
   8:      import Android.util.Log;  
   9:        
  10:      import com.andyidea.bean.Student;  
  11:      import com.j256.ormlite.Android.apptools.OrmLiteSqliteOpenHelper;  
  12:      import com.j256.ormlite.dao.Dao;  
  13:      import com.j256.ormlite.support.ConnectionSource;  
  14:      import com.j256.ormlite.table.TableUtils;  
  15:        
  16:      public class DatabaseHelper extends OrmLiteSqliteOpenHelper {  
  17:            
  18:          private static final String DATABASE_NAME = "ormlite.db";  
  19:          private static final int DATABASE_VERSION = 1;  
  20:            
  21:          private Dao<Student,Integer> stuDao = null;  
  22:            
  23:          public DatabaseHelper(Context context){  
  24:              super(context, DATABASE_NAME, null, DATABASE_VERSION);  
  25:          }  
  26:        
  27:          /**  
  28:           * 创建SQLite数据库  
  29:           */  
  30:          @Override  
  31:          public void onCreate(SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource) {  
  32:              try {  
  33:                  TableUtils.createTable(connectionSource, Student.class);  
  34:              } catch (SQLException e) {  
  35:                  Log.e(DatabaseHelper.class.getName(), "Unable to create datbases", e);  
  36:              }  
  37:          }  
  38:        
  39:          /**  
  40:           * 更新SQLite数据库  
  41:           */  
  42:          @Override  
  43:          public void onUpgrade(  
  44:                  SQLiteDatabase sqliteDatabase,   
  45:                  ConnectionSource connectionSource,   
  46:                  int oldVer,  
  47:                  int newVer) {  
  48:              try {  
  49:                  TableUtils.dropTable(connectionSource, Student.class, true);  
  50:                  onCreate(sqliteDatabase, connectionSource);  
  51:              } catch (SQLException e) {  
  52:                  Log.e(DatabaseHelper.class.getName(),   
  53:                          "Unable to upgrade database from version " + oldVer + " to new "  
  54:                          + newVer, e);  
  55:              }  
  56:          }  
  57:            
  58:          public Dao<Student,Integer> getStudentDao() throws SQLException{  
  59:              if(stuDao == null){  
  60:                  stuDao = getDao(Student.class);  
  61:              }  
  62:              return stuDao;  
  63:          }  
  64:        
  65:      }  

【5】包com.andyidea.ormsqlite下源码:

MainActivity.java源码:

 

   1:  package com.andyidea.ormsqlite;  
   2:    
   3:  import java.sql.SQLException;  
   4:    
   5:  import com.andyidea.bean.Student;  
   6:  import com.andyidea.db.DatabaseHelper;  
   7:  import com.j256.ormlite.Android.apptools.OrmLiteBaseActivity;  
   8:  import com.j256.ormlite.dao.Dao;  
   9:    
  10:  import Android.content.Intent;  
  11:  import Android.os.Bundle;  
  12:  import Android.view.Menu;  
  13:  import Android.view.MenuItem;  
  14:  import Android.widget.EditText;  
  15:    
  16:  public class MainActivity extends OrmLiteBaseActivity<DatabaseHelper> {  
  17:        
  18:      private EditText stuNO;  
  19:      private EditText stuName;  
  20:      private EditText stuAge;  
  21:      private EditText stuSex;  
  22:      private EditText stuScore;  
  23:      private EditText stuAddress;  
  24:        
  25:      private Student mStudent;  
  26:      private Dao<Student,Integer> stuDao;  
  27:        
  28:      private final int MENU_ADD = Menu.FIRST;  
  29:      private final int MENU_VIEWALL = Menu.FIRST+1;  
  30:      private final int MENU_EDIT = Menu.FIRST+2;  
  31:        
  32:      private Bundle mBundle = new Bundle();  
  33:        
  34:      /** Called when the activity is first created. */  
  35:      @Override  
  36:      public void onCreate(Bundle savedInstanceState) {  
  37:          super.onCreate(savedInstanceState);  
  38:          setContentView(R.layout.main);  
  39:            
  40:          initializeViews();  
  41:      }  
  42:        
  43:      /**  
  44:       * 初始化UI界面  
  45:       */  
  46:      private void initializeViews(){  
  47:          stuNO = (EditText)findViewById(R.id.stuno);  
  48:          stuName = (EditText)findViewById(R.id.name);  
  49:          stuAge = (EditText)findViewById(R.id.age);  
  50:          stuSex = (EditText)findViewById(R.id.sex);  
  51:          stuScore = (EditText)findViewById(R.id.score);  
  52:          stuAddress = (EditText)findViewById(R.id.address);  
  53:            
  54:          mBundle = getIntent().getExtras();  
  55:          if(mBundle!=null && mBundle.getString("action").equals("viewone")){  
  56:              mStudent = (Student)getIntent().getSerializableExtra("entity");  
  57:              setStudentUIData(mStudent);  
  58:          }  
  59:            
  60:          if(mBundle!=null && mBundle.getString("action").equals("edit")){  
  61:              mStudent = (Student)getIntent().getSerializableExtra("entity");  
  62:              setStudentUIData(mStudent);  
  63:          }  
  64:      }  
  65:        
  66:      @Override  
  67:      public boolean onPrepareOptionsMenu(Menu menu) {  
  68:          if(mBundle!=null && mBundle.getString("action").equals("viewone"))  
  69:              return false;  
  70:          else  
  71:              return super.onPrepareOptionsMenu(menu);  
  72:            
  73:      }  
  74:    
  75:      @Override  
  76:      public boolean onCreateOptionsMenu(Menu menu) {  
  77:          if(mBundle!=null && mBundle.getString("action").equals("edit")){  
  78:              menu.add(1,MENU_EDIT,0,"保存");  
  79:          }else{  
  80:              menu.add(0,MENU_ADD,0,"增加");  
  81:              menu.add(0,MENU_VIEWALL,0,"查看");  
  82:          }  
  83:          return super.onCreateOptionsMenu(menu);  
  84:      }  
  85:    
  86:      @Override  
  87:      public boolean onOptionsItemSelected(MenuItem item) {  
  88:          switch (item.getItemId()) {  
  89:          case MENU_ADD:  
  90:              try {  
  91:                  stuDao = getHelper().getStudentDao();  
  92:                  getStudentData();  
  93:                  if(mStudent != null){  
  94:                      //创建记录项  
  95:                      stuDao.create(mStudent);  
  96:                  }  
  97:              } catch (SQLException e) {  
  98:                  e.printStackTrace();  
  99:              }  
 100:              break;  
 101:          case MENU_VIEWALL:  
 102:              Intent intent = new Intent();  
 103:              intent.setClass(MainActivity.this, StudentListActivity.class);  
 104:              startActivity(intent);  
 105:              break;  
 106:          case MENU_EDIT:  
 107:              try {  
 108:                  getStudentData();  
 109:                  stuDao = getHelper().getStudentDao();  
 110:                  if(mStudent != null){  
 111:                      //更新某记录项  
 112:                      stuDao.update(mStudent);  
 113:                  }  
 114:              } catch (SQLException e) {  
 115:                  e.printStackTrace();  
 116:              }  
 117:              break;  
 118:          default:  
 119:              break;  
 120:          }  
 121:          return super.onOptionsItemSelected(item);  
 122:      }  
 123:    
 124:      /**  
 125:       * 获取界面值(实体信息)  
 126:       */  
 127:      private void getStudentData(){  
 128:          mStudent = new Student();  
 129:          mStudent.setStuNO(stuNO.getText().toString());  
 130:          mStudent.setName(stuName.getText().toString());  
 131:          mStudent.setAge(Integer.parseInt(stuAge.getText().toString()));  
 132:          mStudent.setSex(stuSex.getText().toString());  
 133:          mStudent.setScore(Double.parseDouble(stuScore.getText().toString()));  
 134:          mStudent.setAddress(stuAddress.getText().toString());  
 135:      }  
 136:        
 137:      /**  
 138:       * 赋值给UI界面  
 139:       * @param student  
 140:       */  
 141:      private void setStudentUIData(Student student){  
 142:          stuNO.setText(student.getStuNO());  
 143:          stuName.setText(student.getName());  
 144:          stuAge.setText(String.valueOf(student.getAge()));  
 145:          stuSex.setText(student.getSex());  
 146:          stuScore.setText(String.valueOf(student.getScore()));  
 147:          stuAddress.setText(student.getAddress());  
 148:      }  
 149:  }  

StudentListActivity.java源码:

 

   1:   
   2:      package com.andyidea.ormsqlite;  
   3:        
   4:      import java.sql.SQLException;  
   5:      import java.util.List;  
   6:        
   7:      import Android.app.AlertDialog;  
   8:      import Android.content.Context;  
   9:      import Android.content.DialogInterface;  
  10:      import Android.content.Intent;  
  11:      import Android.os.Bundle;  
  12:      import Android.view.ContextMenu;  
  13:      import Android.view.ContextMenu.ContextMenuInfo;  
  14:      import Android.view.LayoutInflater;  
  15:      import Android.view.Menu;  
  16:      import Android.view.MenuItem;  
  17:      import Android.view.View;  
  18:      import Android.view.ViewGroup;  
  19:      import Android.widget.AdapterView.AdapterContextMenuInfo;  
  20:      import Android.widget.BaseAdapter;  
  21:      import Android.widget.ListView;  
  22:      import Android.widget.TextView;  
  23:        
  24:      import com.andyidea.bean.Student;  
  25:      import com.andyidea.db.DatabaseHelper;  
  26:      import com.j256.ormlite.Android.apptools.OrmLiteBaseActivity;  
  27:      import com.j256.ormlite.dao.Dao;  
  28:        
  29:      public class StudentListActivity extends OrmLiteBaseActivity<DatabaseHelper> {  
  30:            
  31:          private Context mContext;  
  32:          private ListView lvStudents;  
  33:          private Dao<Student,Integer> stuDao;  
  34:          private List<Student> students;  
  35:          private StudentsAdapter adapter;  
  36:          private Student mStudent;  
  37:            
  38:          private final int MENU_VIEW = Menu.FIRST;  
  39:          private final int MENU_EDIT = Menu.FIRST+1;  
  40:          private final int MENU_DELETE = Menu.FIRST+2;  
  41:            
  42:          private int position;  
  43:            
  44:          @Override  
  45:          public void onCreate(Bundle savedInstanceState) {  
  46:              super.onCreate(savedInstanceState);  
  47:              setContentView(R.layout.students);  
  48:              mContext = getApplicationContext();  
  49:                
  50:              lvStudents = (ListView)findViewById(R.id.stulist);  
  51:              registerForContextMenu(lvStudents);  //注册上下文菜单  
  52:                
  53:              queryListViewItem();  
  54:            
  55:              adapter = new StudentsAdapter(students);  
  56:              lvStudents.setAdapter(adapter);  
  57:                
  58:          }  
  59:        
  60:          @Override  
  61:          public void onCreateContextMenu(ContextMenu menu, View v,  
  62:                  ContextMenuInfo menuInfo) {  
  63:              if(v == lvStudents)  
  64:                  position = ((AdapterContextMenuInfo)menuInfo).position;  
  65:                
  66:              menu.add(0,MENU_VIEW, 0, "查看");  
  67:              menu.add(0,MENU_EDIT, 0, "编辑");  
  68:              menu.add(0,MENU_DELETE,0,"删除");  
  69:              super.onCreateContextMenu(menu, v, menuInfo);  
  70:          }  
  71:            
  72:          @Override  
  73:          public boolean onContextItemSelected(MenuItem item) {  
  74:              switch (item.getItemId()) {  
  75:              case MENU_VIEW:  
  76:                  viewListViewItem(position);  
  77:                  break;  
  78:              case MENU_EDIT:  
  79:                  editListViewItem(position);  
  80:                  break;  
  81:              case MENU_DELETE:  
  82:                  deleteListViewItem(position);  
  83:                  break;  
  84:              default:  
  85:                  break;  
  86:              }  
  87:              return super.onContextItemSelected(item);  
  88:          }  
  89:            
  90:          /**  
  91:           * 查询记录项  
  92:           */  
  93:          private void queryListViewItem(){  
  94:              try {  
  95:                  stuDao = getHelper().getStudentDao();  
  96:                  //查询所有的记录项  
  97:                  students = stuDao.queryForAll();  
  98:              } catch (SQLException e) {  
  99:                  e.printStackTrace();  
 100:              }  
 101:          }  
 102:            
 103:          /**  
 104:           * 查看记录项  
 105:           * @param position  
 106:           */  
 107:          private void viewListViewItem(int position){  
 108:              mStudent = students.get(position);  
 109:              Intent intent = new Intent();  
 110:              intent.setClass(mContext, MainActivity.class);  
 111:              intent.putExtra("action", "viewone");  
 112:              intent.putExtra("entity", mStudent);  
 113:              startActivity(intent);  
 114:          }  
 115:            
 116:          /**  
 117:           * 编辑记录项  
 118:           */  
 119:          private void editListViewItem(int position){  
 120:              mStudent = students.get(position);  
 121:              Intent intent = new Intent();  
 122:              intent.setClass(mContext, MainActivity.class);  
 123:              intent.putExtra("action", "edit");  
 124:              intent.putExtra("entity", mStudent);  
 125:              startActivity(intent);  
 126:          }  
 127:            
 128:          /**  
 129:           * 删除记录项  
 130:           * @param position  
 131:           */  
 132:          private void deleteListViewItem(int position){  
 133:              final int pos = position;  
 134:              AlertDialog.Builder builder2 = new AlertDialog.Builder(StudentListActivity.this);  
 135:              builder2.setIcon(Android.R.drawable.ic_dialog_alert)  
 136:                      .setTitle("警告")  
 137:                      .setMessage("确定要删除该记录");  
 138:              builder2.setPositiveButton("确定", new DialogInterface.OnClickListener() {  
 139:                    
 140:                  @Override  
 141:                  public void onClick(DialogInterface dialog, int which) {  
 142:                      Student mDelStudent = (Student)lvStudents.getAdapter().getItem(pos);  
 143:                      try {  
 144:                          stuDao.delete(mDelStudent); //删除记录  
 145:                          queryListViewItem();  
 146:                      } catch (SQLException e) {  
 147:                          e.printStackTrace();  
 148:                      }  
 149:                        
 150:                  }  
 151:              });  
 152:              builder2.setNegativeButton("取消", new DialogInterface.OnClickListener() {  
 153:                    
 154:                  @Override  
 155:                  public void onClick(DialogInterface dialog, int which) {  
 156:                      dialog.dismiss();  
 157:                  }  
 158:              });  
 159:              builder2.show();  
 160:          }  
 161:            
 162:          class StudentsAdapter extends BaseAdapter{  
 163:                
 164:              private List<Student> listStu;  
 165:                
 166:              public StudentsAdapter(List<Student> students){  
 167:                  super();  
 168:                  this.listStu = students;  
 169:              }  
 170:        
 171:              @Override  
 172:              public int getCount() {  
 173:                  return listStu.size();  
 174:              }  
 175:        
 176:              @Override  
 177:              public Student getItem(int position) {  
 178:                  return listStu.get(position);  
 179:              }  
 180:        
 181:              @Override  
 182:              public long getItemId(int position) {  
 183:                  return position;  
 184:              }  
 185:        
 186:              @Override  
 187:              public View getView(int position, View convertView, ViewGroup parent) {  
 188:                  ViewHolder holder;  
 189:                  if(convertView == null){  
 190:                      LayoutInflater mInflater = (LayoutInflater) mContext  
 191:                              .getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
 192:                      convertView = mInflater.inflate(R.layout.studentitem, null);  
 193:                      holder = new ViewHolder();  
 194:                      holder.tvNO = (TextView)convertView.findViewById(R.id.itemno);  
 195:                      holder.tvName = (TextView)convertView.findViewById(R.id.itemname);  
 196:                      holder.tvScore = (TextView)convertView.findViewById(R.id.itemscore);  
 197:                      convertView.setTag(holder);  
 198:                  }else{  
 199:                      holder = (ViewHolder)convertView.getTag();  
 200:                  }  
 201:                    
 202:                  Student objStu = listStu.get(position);  
 203:                  holder.tvNO.setText(objStu.getStuNO());  
 204:                  holder.tvName.setText(objStu.getName());  
 205:                  holder.tvScore.setText(String.valueOf(objStu.getScore()));  
 206:                    
 207:                  return convertView;  
 208:              }  
 209:                
 210:          }  
 211:            
 212:          static class ViewHolder{  
 213:              TextView tvNO;  
 214:              TextView tvName;  
 215:              TextView tvScore;  
 216:          }  
 217:        
 218:      }  

【6】成功运行程序的截图效果:

02_thumb[1]_thumb 03_thumb[1]_thumb 04_thumb[1]_thumb

posted on 2013-03-11 09:10  网络小飞  阅读(230)  评论(0)    收藏  举报