EX10_06_03.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:10k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex10_06;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.app.Activity;
  5. import android.app.AlertDialog;
  6. import android.app.Dialog;
  7. import android.content.DialogInterface;
  8. import android.content.Intent;
  9. import android.content.DialogInterface.OnClickListener;
  10. import android.database.Cursor;
  11. import android.os.Bundle;
  12. import android.view.Menu;
  13. import android.view.MenuItem;
  14. import android.view.View;
  15. import android.view.Window;
  16. import android.view.WindowManager;
  17. import android.widget.AdapterView;
  18. import android.widget.ArrayAdapter;
  19. import android.widget.Button;
  20. import android.widget.EditText;
  21. import android.widget.ListView;
  22. /* 编辑餐厅数据Activity */
  23. public class EX10_06_03 extends Activity
  24. {
  25.   private ListView mListView01;
  26.   static final private int MENU_ADD = Menu.FIRST;
  27.   static final private int MENU_DRAW = Menu.FIRST+2;
  28.   private MySQLiteOpenHelper dbHelper=null;
  29.   /* version必须大于等于1 */
  30.   private int version = 1;
  31.   private List<String> allRestaurantID;
  32.   private List<String> allRestaurantName;
  33.   private List<String> allRestaurantAddress;
  34.   private List<String> allRestaurantCal;
  35.   private List<String> lstRestaurant;
  36.   private int intItemSelected=-1;
  37.   
  38.   /* 数据库数据表  */
  39.   private String tables[] = { "t_restaurant" };
  40.   
  41.   /* 数据库字段名称  */
  42.   private String fieldNames[][] =
  43.   {
  44.     { "f_id", "f_name", "f_address", "f_cal" }
  45.   };
  46.   
  47.   /* 数据库字段数据类型  */
  48.   private String fieldTypes[][] =
  49.   {
  50.     { "INTEGER PRIMARY KEY AUTOINCREMENT", "text" , "text", "text"}
  51.   };
  52.   
  53.   @Override
  54.   protected void onCreate(Bundle savedInstanceState)
  55.   {
  56.     // TODO Auto-generated method stub
  57.     super.onCreate(savedInstanceState);
  58.     setContentView(R.layout.layout_list);
  59.     
  60.     mListView01 = (ListView)findViewById(R.id.myListView1);
  61.     dbHelper = new MySQLiteOpenHelper
  62.     (this, "mydb", null, version, tables, fieldNames, fieldTypes);
  63.     
  64.     updateListView();
  65.     
  66.     mListView01.setOnItemClickListener
  67.     (new ListView.OnItemClickListener()
  68.     {
  69.       @Override
  70.       public void onItemClick
  71.       (AdapterView<?> parent, View v, int id,  long arg3)
  72.       {
  73.         // TODO Auto-generated method stub
  74.         /* f_id字段 */
  75.         intItemSelected = id;
  76.         
  77.         /* 弹出的菜单提供两种功能(编辑、删除) */
  78.         String[] dlgMenu=
  79.         {
  80.           getResources().getText(R.string.str_edit_it).toString(),
  81.           getResources().getText(R.string.str_del_it).toString()
  82.         };
  83.         new AlertDialog.Builder(EX10_06_03.this)
  84.         .setTitle(R.string.str_whattodo)
  85.         .setItems(dlgMenu, mListener1)
  86.         .setPositiveButton(R.string.str_cancel,
  87.         new DialogInterface.OnClickListener()
  88.         {
  89.           public void onClick(DialogInterface dialog, int which)
  90.           {
  91.           }
  92.         }).show();
  93.       }
  94.     });
  95.   }
  96.   
  97.   private OnClickListener mListener1=
  98.   new DialogInterface.OnClickListener()
  99.   {
  100.     @Override
  101.     public void onClick(DialogInterface dialog, int which)
  102.     {
  103.       // TODO Auto-generated method stub
  104.       switch(which)
  105.       {
  106.         case 0:
  107.           /* 数据修改 */
  108.           if(intItemSelected>=0)
  109.           {
  110.             /* 创建背景模糊效果的前景窗口 */
  111.             final Dialog d = new Dialog(EX10_06_03.this);
  112.             Window window = d.getWindow();
  113.             window.setFlags
  114.             (
  115.               WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
  116.               WindowManager.LayoutParams.FLAG_BLUR_BEHIND
  117.             );
  118.             d.setTitle(R.string.str_edit_it);
  119.             d.setContentView(R.layout.layout_edit);
  120.             
  121.             /* 将User点击的餐厅数据放入窗口Widget当中 */
  122.             final EditText mEditText01 = 
  123.             (EditText)d.findViewById(R.id.myEditText1);
  124.             final EditText mEditText02 = 
  125.             (EditText)d.findViewById(R.id.myEditText2);
  126.             final EditText mEditText03 = 
  127.             (EditText)d.findViewById(R.id.myEditText3);
  128.             mEditText01.setText
  129.             (allRestaurantName.get(intItemSelected));
  130.             mEditText02.setText
  131.             (allRestaurantAddress.get(intItemSelected));
  132.             mEditText03.setText
  133.             (allRestaurantCal.get(intItemSelected));
  134.             
  135.             /* 更新数据按钮事件处理 */
  136.             Button mButton01 = (Button)d.findViewById(R.id.myButton2);
  137.             mButton01.setOnClickListener(new Button.OnClickListener()
  138.             {
  139.               @Override
  140.               public void onClick(View arg0)
  141.               {
  142.                 // TODO Auto-generated method stub
  143.                 String[] updateFields =
  144.                 {
  145.                   "f_name", "f_address", "f_cal"
  146.                 };
  147.                 String[] updateValues =
  148.                 {
  149.                   mEditText01.getText().toString(),
  150.                   mEditText02.getText().toString(),
  151.                   mEditText03.getText().toString()
  152.                 };
  153.                 String where = "f_id=?";
  154.                 String[] whereValue =
  155.                 {
  156.                   allRestaurantID.get(intItemSelected)
  157.                 };
  158.                 /* 调用update()更新数据表里的记录 */
  159.                 int intCol = dbHelper.update
  160.                 (
  161.                   tables[0], updateFields, updateValues,
  162.                   where, whereValue
  163.                 );
  164.                 /* 返回更新成功笔数 >0时 */
  165.                 if(intCol>0)
  166.                 {
  167.                   updateListView();
  168.                 }
  169.                 d.dismiss();
  170.               }
  171.             });
  172.             d.show();
  173.           }
  174.           break;
  175.         case 1:
  176.           /* 删除数据 */
  177.           if(intItemSelected>=0)
  178.           {
  179.             String where = "f_id=?";
  180.             String[] whereValue =
  181.             {
  182.               allRestaurantID.get(intItemSelected)
  183.             };
  184.             int intCol = dbHelper.delete
  185.             (
  186.               tables[0], where, whereValue
  187.             );
  188.             
  189.             /* 返回删除成功笔数 >0时 */
  190.             if(intCol>0)
  191.             {
  192.               /* 删除成功 */
  193.               updateListView();
  194.             }
  195.           }
  196.           break;
  197.       }
  198.     }
  199.   };
  200.   
  201.   /**
  202.    * 更新ListView数据
  203.    */
  204.   private void updateListView()
  205.   {
  206.     String f[] = { "f_id", "f_name", "f_address", "f_cal"};
  207.     /* SELECT f[] FROM tables[0] */
  208.     Cursor c = dbHelper.select
  209.     (
  210.       tables[0], f, "", null, null, null, null
  211.     );
  212.     lstRestaurant = new ArrayList<String>();
  213.     allRestaurantID = new ArrayList<String>();
  214.     allRestaurantName = new ArrayList<String>();
  215.     allRestaurantAddress = new ArrayList<String>();
  216.     allRestaurantCal = new ArrayList<String>();
  217.     
  218.     while (c.moveToNext())
  219.     {
  220.       lstRestaurant.add
  221.       (
  222.         c.getString(1)+"("+c.getString(3)+
  223.         getResources().getText(R.string.str_cal)+")"
  224.       );
  225.       allRestaurantID.add(c.getString(0));
  226.       allRestaurantName.add(c.getString(1));
  227.       allRestaurantAddress.add(c.getString(2));
  228.       allRestaurantCal.add(c.getString(3));
  229.     }
  230.     if(lstRestaurant.size()>0)
  231.     {
  232.       ArrayAdapter<String> adapter = new ArrayAdapter<String>
  233.       (
  234.         EX10_06_03.this,
  235.         R.layout.simple_list_item_single_choice, lstRestaurant
  236.       );
  237.       mListView01.setItemsCanFocus(true);
  238.       mListView01.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
  239.       mListView01.setAdapter(adapter);
  240.     }
  241.     else
  242.     {
  243.       /* 数据库无记录,将flag设置为-1 */
  244.       intItemSelected = -1;
  245.       
  246.       ArrayAdapter<String> adapter = new ArrayAdapter<String>
  247.       (
  248.         EX10_06_03.this, R.layout.simple_list_item_single_choice,
  249.         lstRestaurant
  250.       );
  251.       mListView01.setItemsCanFocus(true);
  252.       mListView01.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
  253.       mListView01.setAdapter(adapter);
  254.     }
  255.   }
  256.   
  257.   @Override
  258.   public boolean onCreateOptionsMenu(Menu menu)
  259.   {
  260.     // TODO Auto-generated method stub
  261.     /* menu群组ID */
  262.     int idGroup1 = 0;
  263.     
  264.     /* The order position of the item */
  265.     int orderItem1 = Menu.NONE;
  266.     int orderItem3 = Menu.NONE+2;
  267.      
  268.     menu.add(idGroup1, MENU_ADD, orderItem1, R.string.str_manu1).
  269.     setIcon(android.R.drawable.ic_menu_add);
  270.     menu.add(idGroup1, MENU_DRAW, orderItem3, R.string.str_manu3).
  271.     setIcon(R.drawable.hipposmall);
  272.     return super.onCreateOptionsMenu(menu);
  273.   }
  274.   
  275.   @Override
  276.   public boolean onMenuItemSelected(int featureId, MenuItem item)
  277.   {
  278.     // TODO Auto-generated method stub
  279.     Intent intent = new Intent();
  280.     switch(item.getItemId())
  281.     {
  282.       case (MENU_ADD):
  283.         /* 前往新建餐厅功能 */
  284.         if(dbHelper!=null && 
  285.            dbHelper.getReadableDatabase().isOpen())
  286.         {
  287.           dbHelper.close();
  288.         }
  289.         intent.setClass(EX10_06_03.this, EX10_06_02.class);
  290.         startActivity(intent);
  291.         finish();
  292.         break;
  293.       case (MENU_DRAW):
  294.         /* 前往系统随机数选择餐厅功能 */
  295.         if(dbHelper!=null && 
  296.            dbHelper.getReadableDatabase().isOpen())
  297.         {
  298.           dbHelper.close();
  299.         }
  300.         intent.setClass(EX10_06_03.this, EX10_06_04.class);
  301.         startActivity(intent);
  302.         finish();
  303.         break;
  304.     }
  305.     return super.onMenuItemSelected(featureId, item);
  306.   }
  307.   
  308.   @Override
  309.   protected void onResume()
  310.   {
  311.     // TODO Auto-generated method stub
  312.     super.onResume();
  313.   }
  314.   
  315.   @Override
  316.   protected void onPause()
  317.   {
  318.     // TODO Auto-generated method stub
  319.     super.onPause();
  320.   }
  321.   
  322.   @Override
  323.   protected void onDestroy()
  324.   {
  325.     // TODO Auto-generated method stub
  326.     if(dbHelper!=null && 
  327.        dbHelper.getReadableDatabase().isOpen())
  328.     {
  329.       dbHelper.close();
  330.     }
  331.     super.onDestroy();
  332.   }  
  333. }