实验二 (android)_第1页
实验二 (android)_第2页
实验二 (android)_第3页
实验二 (android)_第4页
实验二 (android)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二菜单与SQLite数据库程序开发班级:计算机13-1 学号:姓名:刘炳君 成绩:一、 实验目的(1) 掌握选项菜单和子菜单的制作方法;(2) 掌握SQLite数据库的基本开发。二、 实验内容(1) 制作一个选项菜单(P85)。 MainActivity.javapackage ;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.SubMenu;import an

2、droid.widget.TextView;public class MainActivity extends Activity private TextView tx;private final static int GROUP1=1;private final static int GROUP2=2;private final static int NEW_COLOR1=Menu.FIRST;private final static int NEW_COLOR2=NEW_COLOR1+1;private final static int NEW_COLOR3=NEW_COLOR2+1;pr

3、ivate final static int NEW_HOBBY1=NEW_COLOR3+1;private final static int NEW_HOBBY2=NEW_HOBBY1+1;private final static int NEW_HOBBY3=NEW_HOBBY2+1;private MenuItem bg1,bg2,bg3;private MenuItem hobby=new MenuItem3; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setC

4、ontentView(R.layout.activity_main); tx=(TextView)this.findViewById(R.id.tx); public boolean onCreateOptionsMenu(Menu menu) SubMenu submenu1=menu.addSubMenu(背景颜色); submenu1.setIcon(R.drawable.q4); submenu1.setHeaderIcon(R.drawable.q4); bg1=submenu1.add(GROUP1, NEW_COLOR1, 1, 深粉红色); bg2=submenu1.add(G

5、ROUP1, NEW_COLOR2, 2, 深天蓝色); bg3=submenu1.add(GROUP1, NEW_COLOR3, 3, 间春绿色); bg1.setChecked(true); submenu1.setGroupCheckable(GROUP1, true, true); SubMenu submenu2=menu.addSubMenu(我的爱好); hobby0=submenu2.add(GROUP2, NEW_COLOR1, 1, 旅游); hobby1=submenu2.add(GROUP2, NEW_COLOR2, 2, 篮球); hobby2=submenu2.ad

6、d(GROUP2, NEW_COLOR3, 3, 游泳); hobby0.setCheckable(true); hobby1.setCheckable(true); hobby2.setCheckable(true);return super.onCreateOptionsMenu(menu); public boolean onOptionsItemSelected(MenuItem item) switch (item.getItemId() case NEW_COLOR1:case NEW_COLOR2:case NEW_COLOR3:item.setChecked(true); se

7、lectColor();break;case NEW_HOBBY1:case NEW_HOBBY2:case NEW_HOBBY3:item.setChecked(!item.isChecked(); selectColor();break;return super.onOptionsItemSelected(item);private void selectColor() / TODO Auto-generated method stubif(bg1.isChecked()tx.setBackgroundResource(R.color.c1);else if(bg2.isChecked()

8、tx.setBackgroundResource(R.color.c2);else if(bg3.isChecked()tx.setBackgroundResource(R.color.c3);else for(MenuItem mi : hobby)if(mi.isChecked()tx.setText(tx.getText().toString()+mi.getTitle();activity_main.xml (2) 制作一个子菜单(P87)。 MainActivity.javapackage ;import android.app.Activity;import android.os.

9、Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.Toast;public class MainActivity extends Activity /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.ac

10、tivity_main); public boolean onCreateOptionsMenu(Menu menu) menu.add(Menu.NONE, 1, 8, 不要).setIcon(android.R.drawable.ic_btn_speak_now); menu.add(Menu.NONE, 2, 2, 数据).setIcon(android.R.drawable.ic_dialog_alert); menu.add(Menu.NONE, 3, 6, 查看).setIcon(android.R.drawable.ic_dialog_info); menu.add(Menu.N

11、ONE, 4, 1, 示例).setIcon(android.R.drawable.ic_btn_speak_now); menu.add(Menu.NONE, 5, 4, 收到).setIcon(android.R.drawable.ic_dialog_email); menu.add(Menu.NONE, 6, 3, 手机).setIcon(android.R.drawable.ic_dialog_map); menu.add(Menu.NONE, 7, 7, 拉师).setIcon(android.R.drawable.ic_btn_speak_now); menu.add(Menu.N

12、ONE, 8, 5, 师范).setIcon(android.R.drawable.ic_btn_speak_now); menu.add(Menu.NONE, 9, 9, 乐视).setIcon(android.R.drawable.ic_btn_speak_now);return true; public boolean onOptionsItemSelected(MenuItem item) switch (item.getItemId() case 1:Toast.makeText(this, 地方, Toast.LENGTH_LONG).show();break; case 2:To

13、ast.makeText(this, 通过, Toast.LENGTH_LONG).show();break; case 3:Toast.makeText(this, 百度, Toast.LENGTH_LONG).show();break; case 4:Toast.makeText(this, 环境, Toast.LENGTH_LONG).show();break; case 5:Toast.makeText(this, 高级, Toast.LENGTH_LONG).show();break; case 6:Toast.makeText(this, 发出, Toast.LENGTH_LONG

14、).show();break; case 7:Toast.makeText(this, 撒擦, Toast.LENGTH_LONG).show();break; case 8:Toast.makeText(this, 东方, Toast.LENGTH_LONG).show();break; case 9:Toast.makeText(this, 删除, Toast.LENGTH_LONG).show();break; default:break; return false; public boolean onPrepareOptionsMenu(Menu menu) Toast.makeTex

15、t(this, 选项菜单前, Toast.LENGTH_LONG).show();return true; activity_main.xml (3) 使用SQLite开发一个简单的学生信息管理系统(能实现数据的增、删、改、查)。增加:删除:ID13 被删除掉修改:ID11 的姓名、学号和日期被改为如下查询:查询学号1303如下MySqliteHelper.javapackage com.example.sqlitedemo;import android.content.ContentValues;import android.content.Context;import android.da

16、tabase.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class MySqliteHelper extends SQLiteOpenHelper private static final String DATABASE_NAME = stu_db;/ 数据库的名字private static final int DATABASEVERSION = 1;/ 版本号privat

17、e static final String TABLE_NAME = stu_table;/ 表名private SQLiteDatabase db;/ 数据库private static final String TAG = MyDataBase;/ 4个字段public static final String ID = _id;public static final String stuName = stu_name;public static final String stuNumber = stu_number;public static final String stuScore =

18、 stu_score;public MySqliteHelper(Context context) / TODO Auto-generated constructor stubsuper(context, DATABASE_NAME, null, DATABASEVERSION);/ 打开或新建数据库(第一次时创建)获得SQLiteDatabase对象,为了读取和写入数据db = this.getWritableDatabase();Overridepublic void onCreate(SQLiteDatabase db) / TODO Auto-generated method stub

19、Log.i(TAG, onCreate();/ 创建表的sql语句String sql = CREATE TABLE + TABLE_NAME + ( + ID+ INTEGER PRIMARY KEY AUTOINCREMENT, + stuName + TEXT,+ stuNumber + INTEGER, + stuScore + FLOAT);db.execSQL(sql); /更新数据库Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) / TODO Auto-generat

20、ed method stubLog.i(TAG, onUpgrade() );/ 删除表的SQLString sql = DROP TABLE IF EXITS + TABLE_NAME;db.execSQL(sql);onCreate(db); /关闭数据库Overridepublic synchronized void close() / TODO Auto-generated method stubLog.i(TAG, close();db.close();super.close();/ 查询所有的数据 ,返回Cursor对象(按照id的升序排列)public Cursor search

21、AllData()Log.i(TAG, searchAllData();/asc是升序desc为降序(默认为asc)return db.query(TABLE_NAME, null, null, null, null, null,MySqliteHelper.ID+ ASC );/插入数据public void insertData(String name,int number,float score )ContentValues values=new ContentValues();values.put(MySqliteHelper.stuName, name);values.put(MyS

22、qliteHelper.stuNumber, number);values.put(MySqliteHelper.stuScore, score);long row=db.insert(TABLE_NAME, null, values);Log.i(TAG, insertData row=+row);/查询指定的信息public Cursor searchSpecific(int number) String columns= MySqliteHelper.ID, MySqliteHelper.stuName, MySqliteHelper.stuNumber, MySqliteHelper.

23、stuScore ;Cursor cur=db.query(TABLE_NAME, columns, MySqliteHelper.stuNumber+=+number, null, null, null, null); Log.i(searchSpecific(), cur.getCount()=+cur.getCount();return cur;/修改数据public void upDateinfo(int id ,String name,int number,float score )ContentValues values=new ContentValues();values.put

24、(MySqliteHelper.stuName, name);values.put(MySqliteHelper.stuNumber, number);values.put(MySqliteHelper.stuScore, score);String whereClause=MySqliteHelper.ID+ = ? ;String whereArgs=Integer.toString(id);int rowaffected =db.update(TABLE_NAME, values, whereClause, whereArgs);Log.i(TAG, upDateinfo() rowaf

25、fected=+rowaffected);/删除数据public void deleteStuInfo(int id)int rowaffected =db.delete(TABLE_NAME, MySqliteHelper.ID+=+id, null);Log.i(TAG, deleteStuInfo() rowaffected=+rowaffected);/判断是否存在改学生的信息public Cursor isHaveThisStu(int number) String columns= MySqliteHelper.ID, MySqliteHelper.stuName, MySqlit

26、eHelper.stuNumber, MySqliteHelper.stuScore ;Cursor cur=db.query(TABLE_NAME, columns, MySqliteHelper.stuNumber+=+number, null, null, null, null); Log.i(isHaveThisStu(), cur.getCount()=+cur.getCount();return cur;SQliteDemo.javapackage com.example.sqlitedemo;import android.os.Bundle;import android.app.

27、AlertDialog;import android.app.TabActivity;import android.database.Cursor;import android.graphics.Color;import android.support.v4.widget.SimpleCursorAdapter;import android.util.Log;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;impor

28、t android.view.View.OnClickListener;import android.view.View.OnKeyListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.TabHost;import android.w

29、idget.Toast;import android.widget.TabHost.OnTabChangeListener;public class SQliteDemo extends TabActivity /各种变量的声明private static final String QUERY_TAG = 查询TAG;private static final String INSERT_TAG = 添加TAG;private static final String UPDATE_TAG = 修改TAG;private static final String DELETE_TAG = 删除TAG

30、;private TabHost mTabHost;private View mViews;private EditText mEditText_Name,mEditText_Number,mEditText_Score;private EditText mEditText_query;private Button mButton_query,mButton_insert,del;private ListView query_ListView,insert_ListView;private SimpleCursorAdapter adapter;/ListView的适配器private MyS

31、qliteHelper database;private Cursor mCursor;/游标,查询后返回的对象private int _id;/当前游标Cursor所在的字段值/private boolean isInsert=false; private Cursor mCursor_query;private String name,number,score;SuppressWarnings(deprecation)Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceSta

32、te);/设置标题颜色和文字this.setTitle(getResources().getString(R.string.title);this.setTitleColor(Color.MAGENTA);/获得TabHost对象mTabHost = this.getTabHost();/通过布局选择器获得所有的组件mViews = LayoutInflater.from(this).inflate(R.layout.activity_sqlite_demo, mTabHost.getTabContentView(),true);this.findViewsAndSetListener();/

33、获得组件Widgetthis.addTabs();/添加TAB/创建SQLiteOpenHelper对象的引用database=new MySqliteHelper(this);showUiAdapter();/更新界面(设置适配器)public void addTabs() mTabHost.addTab(mTabHost.newTabSpec(QUERY_TAG).setContent(R.id.queryLayout_id).setIndicator(getResources().getString(R.string.query_str),getResources().getDrawab

34、le(R.drawable.query);mTabHost.addTab(mTabHost.newTabSpec(INSERT_TAG).setContent(R.id.insertLayout_id).setIndicator(getResources().getString(R.string.insert_str),getResources().getDrawable(R.drawable.add);mTabHost.addTab(mTabHost.newTabSpec(UPDATE_TAG).setContent(R.id.insertLayout_id).setIndicator(ge

35、tResources().getString(R.string.update_str),getResources().getDrawable(R.drawable.refresh);mTabHost.addTab(mTabHost.newTabSpec(DELETE_TAG).setContent(R.id.insertLayout_id).setIndicator(getResources().getString(R.string.delete_str),getResources().getDrawable(R.drawable.delete);mTabHost.setCurrentTab(

36、1);/设置当前显示第2个tab /表单切换是的事件处理mTabHost.setOnTabChangedListener(new OnTabChangeListener() public void onTabChanged(String tabId) / TODO Auto-generated method stubif (tabId.equalsIgnoreCase(SQliteDemo.INSERT_TAG) mEditText_Name.setEnabled(true);mEditText_Number.setEnabled(true);mEditText_Score.setEnable

37、d(true);mButton_insert.setText(getResources().getString(R.string.insert_str);Until.setSearch(false);Until.setInsert(true);Until.setDelete(false);setHintText();insert_ListView.setOnItemClickListener(myOnItemClickListener); else if (tabId.equalsIgnoreCase(SQliteDemo.UPDATE_TAG) mEditText_Name.setEnabl

38、ed(false);mEditText_Number.setEnabled(false);mEditText_Score.setEnabled(false);mButton_insert.setText(getResources().getString(R.string.update_str);Until.setSearch(false);Until.setInsert(false);Until.setDelete(false);setHintEmptyText();insert_ListView.setOnItemClickListener(myOnItemClickListener); e

39、lse if (tabId.equalsIgnoreCase(SQliteDemo.DELETE_TAG) mEditText_Name.setEnabled(false);mEditText_Number.setEnabled(false);mEditText_Score.setEnabled(false);mButton_insert.setText(getResources().getString(R.string.delete_str);Until.setSearch(false);Until.setInsert(false);Until.setDelete(true);setHint

40、EmptyText();insert_ListView.setOnItemClickListener(myOnItemClickListener);elseUntil.setSearch(true);Until.setInsert(false);Until.setDelete(false);mEditText_query.setHint(getResources().getString(R.string.query_edit_hint); Toast.makeText(getApplicationContext(), 现在是 + tabId + 选项, Toast.LENGTH_SHORT).

41、show(););/找到组件public void findViewsAndSetListener()EditText editTexts=mEditText_Name=(EditText)this.findViewById(R.id.insert_editName_id),mEditText_Number=(EditText)this.findViewById(R.id.insert_editNumber_id),mEditText_Score=(EditText)this.findViewById(R.id.insert_editScore_id);mEditText_query=(Edi

42、tText)this.findViewById(R.id.query_edit_id);mButton_query=(Button)this.findViewById(R.id.query_button_id);mButton_insert=(Button)this.findViewById(R.id.insert_button_id);del=(Button)this.findViewById(R.id.del_button_id);query_ListView=(ListView)this.findViewById(R.id.query_list_id);insert_ListView=(

43、ListView)this.findViewById(R.id.insert_list_id);mButton_query.setOnClickListener(queryButton_OnClickListener);mButton_insert.setOnClickListener(insertButton_OnClickListener);del.setOnClickListener(del_OnClickListener);for (int i = 0; i = 0) adapter=new SimpleCursorAdapter(this,R.layout.list_item, mC

44、ursor,new StringMySqliteHelper.ID,MySqliteHelper.stuName,MySqliteHelper.stuNumber,MySqliteHelper.stuScore , new int R.id.id_id,R._id,R.id.number_id,R.id.score_id);/为ListView设置适配器if (Until.isSearch() query_ListView.setAdapter(adapter);elseinsert_ListView.setAdapter(adapter); else Toast.makeTex

45、t(SQliteDemo.this, 没有信息!, Toast.LENGTH_SHORT).show(); /提示语为空public void setHintEmptyText()mEditText_Name.setHint();mEditText_Number.setHint();mEditText_Score.setHint();/设置提示语public void setHintText()mEditText_Name.setHint(getResources().getString(R.string.insert_editName_hint);mEditText_Number.setHi

46、nt(getResources().getString(R.string.insert_editNumber_hint);mEditText_Score.setHint(getResources().getString(R.string.insert_editScore_hint);Overridepublic boolean onCreateOptionsMenu(Menu menu) getMenuInflater().inflate(R.menu.activity_sqlite_demo, menu);return true;OnClickListener queryButton_OnClickListener=new OnClickListener()public void onClick(View v) / TODO Auto-generated me

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论