位置: 编程技术 - 正文

androidday3

编辑:rootadmin
##_android下数据库的创建(重点)在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型&#;。 但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储位整数, 当向这种字段保存除整数以外的数据时,将会产生错误。 另外,在编写CREATE TABLE 语句时,你可以省略跟在字段名称后面的数据类型信息,如下面语句你可以省略 name字段的类型信息:CREATE TABLE person (personid integer primary key autoincrement, name varchar())SQLite可以解析大部分标准SQL语句,如:查询语句:select * from 表名 where 条件子句 group by 分组字句 having ... order by 排序子句如:select * from person select * from person order by id desc select name from person group by name having count(*)>1分页SQL与mysql类&#;,下面SQL语句获取5条记录,跳过前面3条记录select * from Account limit 5 offset 3 或者 select * from Account limit 3,5插入语句:insert into 表名(字段列表) values(&#;列表)。如: insert into person(name, age) values(‘传智’,3)更新语句:update 表名 set 字段名=&#; where 条件子句。如:update person set name=‘传智‘ where id=删除语句:delete from 表名 where 条件子句。如:delete from person where id=获取添加记录后自增长的ID&#;:SELECT last_insert_rowid()SQLiteOpenHelper:管理数据库的版本 在android应用程序中创建按数据库的步骤: 1、写一个DBHelper,继承了SQLiteOpenHelper,重新写了父类的构造方法、onCreate、 helper = new DBHelper(this, "account.db", null, 1); onCreate是在数据库创建的时候调用的,主要用来初始化数据表结构和插入数据初始化的记录 onUpGrade是在数据库版本升级的时候调用的,主要用来改变表结构 2、调用db = helper.getWritableDatabase(),得到数据对象##_数据库sql语句的增删改查 创建表结构:create table person (id integer primary key autoincrement,name varchar()); 插入:insert into person (name)values("lisi"); 查询:select * from person; 更新:update person set name='wangwu' where id=1 删除:delete from person where id=1##_android下数据库的增删改查(重点) 在android应用程序中使用db.execSQL("sql",bindArgs)操作增删改查语句;1、创建表结构 public void create(View v){db.execSQL("create table person (id integer primary key autoincrement,name varchar())", new Object[]{});Toast.makeText(this, "创建表结构成功", 0).show();}2、插入public void insert(View v){db.execSQL("insert into person (name)values(?)", new String[]{"lisi"});Toast.makeText(this, "插入数据成功", 0).show();}3、查询:db.rawQuery,cursor类&#;于一个指针,当cursor指向一条记录时,就把当前记录的数据封装到cursor中,直接从cursor取数据public void query(View v){ Cursor cursor = db.rawQuery("select * from person",null); //移动游标,返回&#;为true表示没有移动到数据集的最后(空),如果为false已经数据集的最后(没有数据了) while(cursor.moveToNext()){int id = cursor.getInt(0);String name = cursor.getString(1); System.out.println("id="&#;id&#;"; name="&#;name); } Toast.makeText(this, "查询数据成功", 0).show();}4、更新 public void update(View v){db.execSQL("update person set name='wangwu' where id=?", new Object[]{1});Toast.makeText(this, "更新数据成功", 0).show();}4、删除 public void delete(View v){db.execSQL("delete from person where id=?", new Object[]{1});Toast.makeText(this, "删除数据成功", 0).show();} ##_数据库的另外一种增删改查方法(重点)使用google提供的另外一种方式操作数据库表:1、插入数据public void insert(View v){//db.execSQL("insert into person (name)values(?)", new String[]{"lisi"}); ContentValues values = new ContentValues(); Random r = new Random(); values.put("name", "zhangsan"&#;r.nextInt()); long rowId = db.insert("person", null, values); System.out.println("rowId="&#;rowId);Toast.makeText(this, "插入数据成功", 0).show();} 2、查询数据public void query(View v){ /** * table 表名 * columns 查询的列 * selection 查询条件"id=1" * selectionArgs 查询条件的&#; * String groupBy * String having * String orderBy * */ Cursor cursor = db.query("person", new String[]{"id","name" }, null, null, null, null, null); while(cursor.moveToNext()){int id = cursor.getInt(0);String name = cursor.getString(1); System.out.println("id="&#;id&#;"; name="&#;name); } Toast.makeText(this, "查询数据成功", 0).show();} public void update(View v){// db.execSQL("update person set name='wangwu' where id=?", new Object[]{1});//用来封装要修改的列名和&#; ContentValues values = new ContentValues(); values.put("name", "wangwu"); db.update("person", values, "id=?", new String[]{"1"}); Toast.makeText(this, "更新数据成功", 0).show();} public void delete(View v){// db.execSQL("delete from person where id=?", new Object[]{1}); db.delete("person", "id=?", new String[]{"2"});Toast.makeText(this, "删除数据成功", 0).show();}##_命令行查看数据库 使用adb shell进入模拟器或者手机的控制台; 使用cd切换到数据库文件所在的目录; 使用sqlite3 数据库文件的名称打开数据; 使用增删改查语句操作数据库。 ##_数据库的事务(重点) 什么是事务:同一组操作要么同时成功,要么同时失败; zhangsan -> lisi yuan 1、zhangsan - 2、lisi &#; * 在android应用程序中使用SQLite数据库事务的步骤:try{//1、在业务逻辑开始的时候开启事务:db.beginTransaction();//张三转出ContentValues values = new ContentValues();values.put("money", "");db.update("account", values, "id=?", new String[]{"1"});//李四收到ContentValues values = new ContentValues();values.put("money", "");db.update("account", values, "id=?", new String[]{"2"});//2、 在业务逻辑结束的时候告诉系统数据库提交成功db.setTransactionSuccessful();} finally{//3、告诉系统数据库结束db.endTransaction();}##_listview的使用(重点) ListView :用来在界面上显示数据列表。 MVC: Model Person View ListView Controle Adapter 数据适配器 使用listview显示数据列表的步骤:1、在布局文件中添加一个listview空间2、在代码中找到这个listview控件3、创建一个数据适配器为listview填充数据##_ArrayAdapter 使用ArrayAdapter为listview填充数据的步骤: 1、在布局文件中添加ListView 2、在代码中初始化这个listview控件 3、调用listview.setAdapter()填充数据 //使用适配器为listview填充数据//new ArrayAdapter:context 上下文,resourceId 条目布局文件的资源ID,object[] 要显示的数据lv.setAdapter(new ArrayAdapter<String>(this, R.layout.item, new String[]{"王菲","谢霆锋","张柏芝","李亚鹏"})); ##_SimpleAdapter 使用ArrayAdapter为listview填充数据的步骤: 1、在布局文件中添加ListView 2、在代码中初始化这个listview控件 3、调用listview.setAdapter()填充数据 //使用适配器为listview填充数据//new SimpleAdapter:context 上下文,resourceId 条目布局文件的资源ID,String[] 要显示的列名,int[] 指定列显示在item布局文件的哪个控件上lv.setAdapter(new SimpleAdapter(this, data, R.layout.item, new String[]{"id","name"}, new int[]{R.id.tv_id,R.id.tv_name})); 条目的布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@&#;id/tv_id" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@&#;id/tv_name" /> </LinearLayout>##_复杂listview界面的显示(重点) 步骤: 1、在布局文件中添加ListView 2、在代码中初始化这个listview控件lv = (ListView) findViewById(R.id.lv); 3、自定义数据适配器,继承了BaseAdapter,重写4个方法,其中getCount、getView是我们关系的private class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return ;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = View.inflate(MainActivity.this, R.layout.item, null);ImageView iv = (ImageView) view.findViewById(R.id.iv);TextView tv_title = (TextView) view.findViewById(R.id.tv_title);tv_title.setText("左香兰左香兰左香兰左香兰左香兰左香兰左香兰左香兰左香兰左香兰左香兰左香兰左香兰左香兰左香兰");TextView tv_desc = (TextView) view.findViewById(R.id.tv_desc);tv_desc.setText("右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿右向绿");return view;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}} 4、调用lv.setAdapter(new MyAdapter())填充数据##_数据库listview界面的显示public class MainActivity extends Activity { private SQLiteDatabase db; private ListView lv; private List<Person> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化listview控件 lv = (ListView) findViewById(R.id.lv); DBHelper helper = new DBHelper(this, "persons.db", null, 1); db = helper.getWritableDatabase(); } public void insert(View v){// db.execSQL("insert into person (name)values(?)", new String[]{"lisi"}); ContentValues values = new ContentValues(); Random r = new Random(); values.put("name", "zhangsan"&#;r.nextInt()); long rowId = db.insert("person", null, values); System.out.println("rowId="&#;rowId);Toast.makeText(this, "插入数据成功", 0).show();} public void query(View v){ list = new ArrayList<Person>(); /** * table 表名 * columns 查询的列 * selection 查询条件"id=1" * selectionArgs 查询条件的&#; * String groupBy * String having * String orderBy) * */ Cursor cursor = db.query("person", new String[]{"id","name" }, null, null, null, null, null); while(cursor.moveToNext()){ Person p = new Person();int id = cursor.getInt(0);p.setId(id);String name = cursor.getString(1);p.setName(name);list.add(p);System.out.println("id="&#;id&#;"; name="&#;name); } //把数据显示到列表 lv.setAdapter(new MyAdapter()); Toast.makeText(this, "查询数据成功", 0).show();} /** *创建一个数据适配器,为listview填充数据 */private class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return list.size();}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = null;if(convertView != null){view = convertView;}else{view = View.inflate(MainActivity.this, R.layout.item, null);}TextView tv_id = (TextView) view.findViewById(R.id.tv_id);TextView tv_name = (TextView) view.findViewById(R.id.tv_name);Person p = list.get(position);tv_id.setText(p.getId()&#;"");tv_name.setText(p.getName());return view;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}}}##_对话框合集1、Toast2、对话框:* 确定取消对话框 //1、得到对话框的构造器,用来构造对话框的模版AlertDialog.Builder builder = new Builder(this);//2、构造对话框的模版//设置标题builder.setTitle("提醒:");//设置提示信息builder.setMessage("若练此功,必先自宫!");//设置确定按钮builder.setPositiveButton("确定自宫", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "即使自宫,也未必成功", 0).show();}});//设置取消按钮builder.setNegativeButton("想想再说", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "若不自宫一定不会成功", 0).show();}});//3、使用构造器创建一个对话框AlertDialog dialog = builder.create();//4、显示对话框dialog.show();* 单选项对话框//1、得到对话框的构造器,用来构造对话框的模版AlertDialog.Builder builder = new Builder(this);//2、构造对话框的模版//设置标题builder.setTitle("请选择性别:");//设置提示信息final String[] items = new String[]{"女","男","其他"};builder.setSingleChoiceItems(items, 0, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "您选择了性别:"&#;items[which], 0).show(); //关闭对话框 dialog.dismiss();}});//3、使用构造器创建一个对话框AlertDialog dialog = builder.create();//4、显示对话框dialog.show();//代替前面两行代码// builder.show();}* 多选对话框//1、得到对话框的构造器,用来构造对话框的模版AlertDialog.Builder builder = new Builder(this);//2、构造对话框的模版//设置标题builder.setTitle("请选择您喜欢吃的水果:");//设置提示信息final String[] items = new String[]{"西瓜","苹果","榴莲","香蕉","草莓","柚子"};final boolean[] checkedItems = new boolean[]{false,true,false,false,false,false};builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {//dialog当前对话框,which当前点击的选项的数组下标,isChecked当前选项是否被选中@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {//改变当前选项的&#;checkedItems[which] = isChecked;}});//添加提交按钮builder.setPositiveButton("提交", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});//3、使用构造器创建一个对话框AlertDialog dialog = builder.create();//4、显示对话框dialog.show();//代替前面两行代码// builder.show();}* 进度对话框 //得到一个进度对话框的对象final ProgressDialog pd = new ProgressDialog(MainActivity.this);pd.setTitle("提醒:");pd.setMessage("请稍等...");//显示对话框pd.show();//模拟的耗时的任务new Thread(){public void run() {try {Thread.sleep();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}//关闭对话框pd.dismiss();};}.start();}* 进度条对话框public void button(View view){//得到一个进度对话框的对象final ProgressDialog pd = new ProgressDialog(MainActivity.this);pd.setTitle("提醒:");pd.setMessage("请稍等...");//设置进度条的样式pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置最大进度pd.setMax();//显示对话框pd.show();//模拟的耗时的任务new Thread(){public void run() {try {for(int i=0; i<;i&#;&#;){Thread.sleep();//更新进度pd.setProgress(i);}} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}//关闭对话框pd.dismiss();};}.start();}##_帧动画(重点) 一组有序的图片一帧一帧的去播放。 步骤:1、准备资源文件:<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android=" android:oneshot="false" >//如果设置true表示播放一次,false表示循环播放 <item android:drawable="@drawable/g_1" android:duration=""/> <item android:drawable="@drawable/g_2" android:duration=""/> <item android:drawable="@drawable/g_3" android:duration=""/> <item android:drawable="@drawable/g_4" android:duration=""/> <item android:drawable="@drawable/g_5" android:duration=""/> <item android:drawable="@drawable/g_6" android:duration=""/> <item android:drawable="@drawable/g_7" android:duration=""/> <item android:drawable="@drawable/g_8" android:duration=""/> <item android:drawable="@drawable/g_9" android:duration=""/> <item android:drawable="@drawable/g_" android:duration=""/></animation-list>2、在布局文件中添加ImageView控件3、设置imgeview的背景资源ImageView rocketImage = (ImageView) findViewById(R.id.iv);//设置背景资源rocketImage.setBackgroundResource(R.drawable.g);4、获得动画资源AnimationDrawable rocketAnimation = (AnimationDrawable) rocketImage.getBackground();5、开始播放动画rocketAnimation.start();##_补间动画改变图片的透明度、缩放、旋转、平移的操作;

推荐整理分享androidday3,希望有所帮助,仅作参考,欢迎阅读内容。

androidday3

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

[置顶] Android GradientDrawable高级应用 以后完全用不上美工了 先看截图1图为自定义的Textview2、3图为点击效果具体实现如下:1.定义自定义控件属性declare-styleablename=ShapeTextviewattrname=touchSolidColorformat=color/attrname=solidCo

Services 翻译第二集 原文地址:

Android 获取手机屏幕的宽度和高度 WindowManagerwm=(WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE);intwidth=wm.getDefaultDisplay().getWidth();intheight=wm.getDefaultDisplay().getHeight();2、WindowManagerwm=this.ge

标签: androidday3

本文链接地址:https://www.jiuchutong.com/biancheng/386100.html 转载请保留说明!

上一篇:Android平台上MVP的介绍(android mvp mvc)

下一篇:[置顶] Android GradientDrawable高级应用 以后完全用不上美工了([置顶]bilinovel)

  • 小规模纳税人执行小企业会计准则吗
  • 增值税应纳税额的计算
  • 来料加工账务处理举例
  • 福利费计提多了如何处理
  • 主管盾和制单盾的区别
  • 个体户逾期申报罚款多少
  • 在本公司交社保辞职了还能交吗
  • 企业所得税可以不交吗
  • 没收到发票可以做成本吗
  • 业务招待费记账凭证摘要
  • 承兑贴现利息怎么入账
  • 出口进项税额转出怎么做账务处理
  • 增值税普通发票和普通发票的区别怎么交税
  • 税前可以扣除的管理费用计算公式
  • 当月工资补扣个税吗
  • 财务费用利息收入在损益表中怎么填
  • 设备租赁成本会计分录
  • 一般企业财务报表格式2019选是还是否
  • 登记为一般纳税人后可以转为小规模纳税人
  • 一接通电源就自动关机
  • win10专业版如何激活
  • 鸿蒙工具箱使用视频
  • Win10 21H2 Build 21354 ISO 太阳谷官方镜像预览版下载
  • 查补税款有未缴纳怎么办
  • 公司代扣税
  • php正则替换字符串
  • 个体工商户减免个人所得税政策
  • react_router
  • vue操作excel
  • 喰种小说在线阅读
  • rust 入门教程
  • 子公司借钱给母公司使用
  • 公司出资认缴和实缴的区别
  • 建筑企业增值税收入确认时间
  • 会计账簿记账规则最新
  • dede织梦怎么转成zblog
  • 企业资产评估增值
  • 财政专户资金支出
  • 无偿调入的固定资产其贷方应计入
  • 分公司注销怎么起诉公司
  • 小规模纳税人减按1%如何填报申报表
  • 专用发票和普通发票 报销
  • 跨月的增值税专用发票怎么冲红或者是作废
  • 房产税的政策依据
  • 审计报告的分类不包含
  • 债务重组损失计入什么科目2020
  • 项目投标代理服务方案
  • 工商年报和税务年报有什么区别
  • 短期借款利息的使用账户是
  • 收到客户回款 应收账款减少还是增多
  • 固定资产大修理支出摊销年限
  • 违约金从货款中扣除如何记账
  • 小规模纳税人的认定标准是什么
  • 企业所得税收入是含税还是不含税
  • 新准则下企业开什么发票
  • 提前支付利息如何计算
  • sql时间用什么数据类型
  • sql语言中delete删除命令语句详解
  • 全国县市区最多的省
  • 微软在印度的投资
  • 离线方式快速安装在哪里
  • ssh -i命令
  • win8.1流畅吗
  • number mac
  • wind8桌面
  • win8.1c盘满了怎么办
  • 有没有免费的win10
  • win7中Windows Time时间服务错误1060怎么办?
  • python引用方法
  • java sc is never closed
  • 使用nodejs连接openai超时
  • 河北电子税务局社保缴费流程
  • 网上申报纳税小程序下载
  • 电子税务局企业账号是税号吗
  • 怎么代理保险业务
  • 白酒的消费税怎么算计算列题
  • 进境邮件补充申请
  • 税务局2017年40号令
  • 地税怎么交税
  • 预缴税款怎么做账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设