實驗8 SQLite數據庫操做

實驗8  SQLite數據庫操做java

【目的】數據庫

  設計一個我的通信錄,掌握Android平臺下的數據庫開發,該我的通信錄主要包括聯繫人列表和聯繫人詳細信息等界面。數據結構

【要求】app

  程序主界面是通信錄的目錄顯示手機上聯繫人的名稱。長按聯繫人的姓名能夠顯示聯繫人的詳細信息。添加和刪除按鈕能夠添加聯繫人和刪除聯繫人。ide

【實驗環境】佈局

  1)PC機post

  2)操做系統:Windows XP學習

  3)軟件: Eclipse, JDK1.6,Android SDK,ADTui

【實驗內容及步驟】this

  1)肯定數據庫的數據結構

  2) 在res/drawable-mdpi目錄下拷入程序要用的圖標

  3)定義字符串資源string.xml

  4)開發佈局文件activity_main.xml用於顯示聯繫人列表

  5)layout目錄下新建一個detail.xml,用於顯示聯繫人詳細信息

  6)開發數據庫輔助類MyOpenHelper類,新建一個MyOpenHelper.java

  7)接下來便進入MainActivity端的開發,實現數據庫增長、刪除、修改記錄等操做

  8)新建一個Activity名字叫DetailActivity.java,實現聯繫人詳細信息顯示功能

string.xml代碼:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">contact</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="Name">姓名:</string>
    <string name="phone">固定電話:</string>
    <string name="mobile">移動電話:</string>
    <string name="email">電子郵件:</string>
    <string name="post">郵政編碼:</string>
    <string name="addr">通訊地址:</string>
    <string name="comp">公司名稱:</string>
    <string name="add">添加</string>
    <string name="modify">修改</string>
    <string name="delete">刪除</string>
    <string name="save">保存</string>
    <string name="message">確認刪除此聯繫人嗎?</string>
    <string name="ok">肯定</string>
    <string name="cancel">取消</string>
    <string name="title">聯繫人列表</string>

</resources>

MainActivity.java部分代碼:

public class MainActivity extends Activity {

    private DBOpenHelper dbOpenHelper;
    private ContantsAdapter contantsAdapter;
    private ListView dbListView;
    private Cursor cursor;
    
    final int MENU_ADD = Menu.FIRST;
    final int MENU_CHANGE = Menu.FIRST+1;
    
    private List<String> ids;
    private List<String> names;
    private List<String> phones;
    AlertDialog dialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        dbOpenHelper = new DBOpenHelper(this);
        dbListView = (ListView)findViewById(R.id.db_listview);
        refreshDBOpenHelper();

        dbListView.setOnItemClickListener(new OnItemClickListener(){

            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {
                Intent intent= new Intent();
                intent.putExtra("cmd", 0);    
                String contants_id = ids.get(position);//0表明查詢聯繫人,1表明添加聯繫人
                intent.putExtra("id", contants_id);
                intent.setClass(MainActivity.this, DetailContantsActivity.class);
                startActivity(intent);
            }
        });
        
        dbListView.setOnItemLongClickListener(new OnItemLongClickListener(){

            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    final int position, long arg3) {
                dialog = new AlertDialog.Builder(MainActivity.this)
                .setTitle("提示!!")
                .setMessage("肯定要刪除這條記錄?")
                .setPositiveButton("肯定",
                 new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int whichButton)
                     {
                         String contants_id = ids.get(position);
                         dbOpenHelper.deleteContants(contants_id);
                         dbOpenHelper.close();
                         Toast.makeText(MainActivity.this, "正在刪除數據庫,請稍後。。。", Toast.LENGTH_LONG).show();
                         refreshDBOpenHelper();
                         contantsAdapter.notifyDataSetChanged();
                     }
                     })
                 .setNegativeButton("取消",new DialogInterface.OnClickListener()
                 {
                      public void onClick(DialogInterface dialog, int whichButton)
                      {
                         dialog.dismiss();
                      }
                  }).show();
                return false;
            }
        });
    }
    
    @Override
    protected void onResume() {
        refreshDBOpenHelper();    
        contantsAdapter.notifyDataSetChanged();
        super.onResume();
    }

    public void refreshDBOpenHelper(){
        cursor = dbOpenHelper.selectContants();
        ids = new ArrayList<String>();
        names = new ArrayList<String>();
        phones = new ArrayList<String>();
        
        int count = cursor.getCount();
        if(count>0){
            for(int i=0;i<count;i++){
                cursor.moveToPosition(i);
                ids.add(cursor.getString(0));
                names.add(cursor.getString(1));
                phones.add(cursor.getString(2));
            }
        }else{
            Toast.makeText(this, R.string.not_dbcursor_values, Toast.LENGTH_SHORT).show();
        }
        contantsAdapter = new ContantsAdapter(this,names,phones);
        dbListView.setAdapter(contantsAdapter);
        cursor.close();
        dbOpenHelper.close();
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, MENU_ADD, 0, R.string.menu_add)
            .setIcon(R.drawable.add);    //add - add_button 
        menu.add(0, MENU_CHANGE, 0, R.string.menu_change)
            .setIcon(R.drawable.modify);        //add -add_change_password
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){        //
        case MENU_ADD:            //press change add button
            Intent add_intent= new Intent(this,DetailContantsActivity.class);
            add_intent.putExtra("cmd", 1);
            startActivity(add_intent);
            break;
        case MENU_CHANGE:    //press change password button
            Intent change_password_intent = new Intent(MainActivity.this,PasswordManage.class);
            startActivityForResult(change_password_intent,0);
            break;
        }
        return super.onOptionsItemSelected(item);
    }
}

【實驗結果截圖】

【實驗小結】

    此次實驗感受很難,由於缺了幾節課,什麼都沒學習到,可是請教了幾位同窗,勉強完成了一部分。

相關文章
相關標籤/搜索