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

StudentListActivity.java源码:

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

Android中结合OrmLite for android组件对SQLite的CRUD(增删改查)操作实例(三)_第1张图片

你可能感兴趣的:(android,sqlite,ListView,delete,action,menu)