• 实验8


    一、实验目的及要求

    1.目的:设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面。

    2.要求:程序主界面是通讯录的目录显示手机上联系人的名称。点击联系人的姓名可以显示联系人的详细信息。在按了MEMU键之后会弹出菜单栏。单击菜单栏上的按钮可以添加联系人和删除联系人

    二、实验环境

    (1)PC机

    (2)操作系统:Windows XP

    (3)软件: Eclipse, JDK1.6,Android SDK,ADT

    三、实验内容及步骤

    1)在res/drawable-mdpi目录下拷入程序要用的图标

    2)定义字符串资源string.xml

    3)开发布局文件activity_main.xml用于显示联系人列表。

    4)layout目录下新建一个detail.xml,用于显示联系人详细信息

    5)接下来便进入MainActivity端的开发,实现数据库增加、删除、修改记录等操作

    四、实验结果

    代码:

    MainActivity类代码:

    public class MainActivity extends Activity {
    
        private ListView lv;
    
        private ImageButton addButton;
    
        private ImageButton deleteButton;
    
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_main);
    
            lv=(ListView)findViewById(R.id.listView1);
    
            final ArrayList<HashMap<String, Object>> listItem=new ArrayList<HashMap<String,Object>>();    //定义一个动态数组
    
            for (int i = 0; i < 3; i++) {                      //在数组中存放数据
    
                HashMap<String, Object> map=new HashMap<String, Object>();
    
                map.put("DetailName", R.id.nametext);   
    
                map.put("DetailMobile", R.id.mobiletext);
    
                listItem.add(map);     
    
            }
    
            SimpleAdapter simpleAdapter=new SimpleAdapter(MainActivity.this, listItem, R.layout.item,
    
               new String[]{"DetailName","DetailMobile"} , new int[]{R.id.nametext,R.id.mobiletext});
    
            //第一个参数:上下文,第二个参数:需要绑定的数据,第三个参数:每一行的布局,第四个参数:动态数组中的数据源,第五个参数:布局文件的id
    
           
    
            lv.setAdapter(simpleAdapter);   //为ListView绑定适配器
    
            lv.setOnItemClickListener(new OnItemClickListener() {
    
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
    
                    Intent intent=new Intent();
    
                    intent.setClass(MainActivity.this, DetailActivity.class);
    
                    startActivity(intent);
    
                    finish();
    
                }
    
            }); 
    
         
    
            addButton=(ImageButton)findViewById(R.id.addButton);
    
            addButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
    
                    Intent intent2=new Intent();
    
                    intent2.setClass(MainActivity.this, DetailActivity.class);
    
                    startActivity(intent2);
    
                    finish();  
    
                }
    
            });
    
        }

     

    DetailActivity类代码:

    public class DetailActivity extends Activity {
    
         private EditText namEditText;
    
         private EditText mobilEditText;
    
         private EditText emailEditText;
    
         private EditText addressEditText;
    
         private MyOpenHelper helper;
    
         private ImageButton saveButton,backButton;
    
         protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.detail);
    
            namEditText=(EditText)findViewById(R.id.nametext);
    
            mobilEditText=(EditText)findViewById(R.id.emailtext);
    
            emailEditText=(EditText)findViewById(R.id.emailtext);
    
            addressEditText=(EditText)findViewById(R.id.addresstext);
    
            saveButton=(ImageButton)findViewById(R.id.save_imagebtn);
    
            saveButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
    
                   helper=new MyOpenHelper(DetailActivity.this, "contacts.db",null, 1);
    
                   SQLiteDatabase db = helper.getReadableDatabase();     //获得可读的数据库
    
                   ContentValues values = new ContentValues();
    
                   String  name2=namEditText.getText().toString();
    
                   String mobile2=mobilEditText.getText().toString();
    
                   String email2=emailEditText.getText().toString();
    
                   String address2=addressEditText.getText().toString();
    
                    // 开始填数据
    
                    if (name2.equals("")||mobile2.equals("")||email2.equals("")||address2.equals("") ){   
    
                        Toast.makeText(DetailActivity.this, "请输入联系人信息",Toast.LENGTH_LONG).show();}
    
                    else { 
    
                             Cursor cursor=db.rawQuery("select * from contacts where name=? ",new String[]{name2});
    
                                                     //rawQuery方法的第一个参数为select语句;第二个参数为select语句中占位符参数的值
    
                    //Log.i("test","111");
    
                    if (cursor.getCount()<=0) {                                //如果获得的查询记录小于0
    
                            values.put("name",namEditText.getText().toString());     //向表格中插入数据
    
                            values.put("mobile",mobilEditText.getText().toString());
    
                            values.put("email", emailEditText.getText().toString());
    
                            values.put("address",addressEditText.getText().toString());
    
                            db.insert("contacts", null, values);
    
                            values.clear();
    
                            Toast.makeText(DetailActivity.this, "保存成功",Toast.LENGTH_LONG).show();
    
                        }else {                                                   //如果获得的查询记录大于0,数据库中已存在该用户名
    
                            Toast.makeText(DetailActivity.this, "已存在该联系人",Toast.LENGTH_LONG).show();}
    
                    }
    
                }
    
            });
    
            backButton=(ImageButton)findViewById(R.id.goback_imagebtn);
    
            backButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
    
                    Intent intent=new Intent();
    
                    intent.setClass(DetailActivity.this, MainActivity.class);
    
                    startActivity(intent);
    
                    finish();  
    
                }
    
            });  
    
         }
    
    }

    MyOpenHelper类代码:

    public class MyOpenHelper extends SQLiteOpenHelper {
    
        public static final String CREATE_CONTACTS="create table contacts(id integer primary key autoincrement,name,mobile,email,address)";
    
        private Context myContext;
    
        public MyOpenHelper(Context context, String name, CursorFactory factory,int version) {
    
            super(context, name, factory, version);       //调用父类构造器
    
            myContext=context;
    
        }
    
        public void onCreate(SQLiteDatabase db) {
    
            db.execSQL(CREATE_CONTACTS);
    
            Toast.makeText(myContext, "数据库创建成功", Toast.LENGTH_LONG).show();      
    
        }
    
        public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {       
    
        }

     

    实验结果截图

    五、实验总结

    这次实验是对数据库进行增、删、查、改的操作,基础是先建立一个表,在虚拟机中建立一个数据结构。让我们对安卓程序有了进一步的了解,在实验过程中,对各种表得结构不是很清楚。

  • 相关阅读:
    第二章Redis管理实战
    第一章Redis入门部署及持久化介绍
    数据库命令
    第一章MySQL介绍及安装
    第十一章 MHA高可用及读写分离
    第八章 日志管理
    第九章 备份和恢复
    第十章 主从复制
    关系型数据库和非关系型数据库的对比
    MySQL面试题
  • 原文地址:https://www.cnblogs.com/44ZBW/p/5488198.html
Copyright © 2020-2023  润新知