码迷,mamicode.com
首页 > 移动开发 > 详细

[Android开发学习] day03

时间:2015-03-05 22:25:20      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:

Day03

下拉列表相关

一、自动补全组件:Autocompletetextview

自动补全组件AutoCompleteTextView) :几个字符开始匹配:默认2个字

<AutoCompleteTextView

                    android:id="@+id/auto"

                    android:completionThreshold="1"/>

 

二、适配器:装配车间;制作一个视图——小条。因此我们要给小条提供数据,适配器就会自动生成这个视图。

【Ctrl+鼠标左键:可以进入函数声明。】

 

适配器创建并使用步骤

注意:请先在新建的xml布局文件中,创建一个含有数据集的MVC组件,并将其xml布局绑定到对应的src包中的XXX.java文件中,或直接在已有的xml布局中添加MVC的组件(例如:AutoCompleteTextView)以下操作均在java文件中。 

1.准备数据源

private String[] arr={"鲁菜","川菜","湘菜","粤菜"};

2.声明一个AutoCompleteTextView组件:

private AutoCompleteTextView mAuTx;

3.初始化这个下拉菜单组件

mAuTx=(AutoCompleteTextView) findViewById(R.id.auto);

4.创建适配器

ArrayAdapter<String> adapter1=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr);

注意:ArrayAdapter 泛型:只支持string

  Context类:当前类(界面)本身XXXactivity.this,,没有内部类的情况下直接写this

  Resource:布局——系统布局,让系统提供布局,android.r.layout. simple_list_item_1

  Objects:数据源

5. 将下拉菜单组件 绑定 这个适配器

mAuTx.setAdapter(adapter1);

 

 

三、imageview设置数据源效果

1.声明要绑定的组件

private ImageButton mDrop;

2.初始化组件

mDrop=(ImageButton) findViewById(R.id.imageButton1);

3.对组件设置OnClickListener

mDrop.setOnClickListener(newOnClickListener() {

                @Override

                public voidonClick(View arg0) {

                    mAuTx.showDropDown();//展示:数据源里的所有数据

 

               

                }

            });

 

 

 


日志工具的使用

怎么看错?

Log工具类的使用。

设置log节点

Log.v(TAG,”onCreate”);

 

调出logCat界面的方法:

Windows->showview->other->android->logCat

 

在logcat中

Info,warning,error,debug,verbose

 


Log-android.util.Log——工具包下

使用形式:Log.i(“tag1”,”消息是。。。。。”);

 

1.在logcat标签,左侧savedfilters(设置过滤器),点击加号,认为设置过滤器。

Filter Name:aa

By Log Tag:tag1

点击ok

 注意:Text标签就是捕捉信息的msg

All messages:默认显示本应用程序的所有log信息。

 

如何根据Logcat进行debug:

在logcat拉到最低端,找到最上面的错误信息,查看text内容。

如何确定错误信息的类型:

1.FATAL exception:main————主线程中出现类问题

2.RuntimeException:——运行时异常:组件信息出现异常

3.{MainActivity}——问题出新在这个activity中

4.ArithmaticException——算数异常

5.Thread.java:2059——先看包名:atcom.example.demo20150304.MainActivity.OnCreate(MainActivity.java:28)

 

nonepondException_空指针异常:

1. activity没注册

2. 组件没找到

SQLiteException

 

 

创建菜单:ActionBar

替代3.0之前的选项菜单Menu。

1.在XXXXXActivity中,找到OnCreateOptionMenu,若没有需要自己创建这个函数

2.在OnCreateOptionMenu,

删除:return super.onCreateOptionsMenu(menu);

添加:

      getMenuInflater().inflate(R.menu.main, menu);

    returntrue;

注意:getMenuInflater菜单布局管理器——由activity提供。

3.在菜单存放在res->menu文件夹下面,扎到main.xml

对Item标签添加:

android:showAsAction="always"

   android:title="@string/action_settings"

注意:一个Item代表一个菜单项。

orderInCategory——排序从小到大,针对多个时。

菜单是否显示在Actionbar:showAsActionneverifRoomalwayswithText(支持图标和文本),collapseActionView

 

自定义menu

使用单一menu复制即可。

1.创建menu:在res下的menu右击:new->xmlfile->起名字(不要大写)->finish

2.在menu中添加item标签,

android:id="@+id/asd"

         android:showAsAction="always"

         android:orderInCategory="100"

         android:title="选项1"

 

3. onCreateOptionsMenu:getmenuinflater().

4. Return true;

 

菜单按钮单击事件

捕捉:触发事件。

1.在MenuActivity中:添加:onOptionsItemSelected(MenuItemitem)

2. switch (key) {

   case value:

     

      break;

 

   default:

      break;

   }

3.修改key:item.getItemId()——Item项的Id

4.value:R.id.menu1

 


快显信息toast

Toast.makeText();

Toast.makeText(context, text, duration).show();


参数说明:

Context:MenuActivity.this

Text:"返回前一页"

Duration:Toast.LENGTH_SHORT 或  Toast.LENGTH_LONG

 

Toast.makeText(MenuActivity.this, "返回前一页", Toast.LENGTH_SHORT).show();

 

 

 

Android中的数据与文件存储

将数据存储到sdk,存储到应用程序目录,存到远端数据库(服务器)

本次讲解怎么存储到应用程序目录:————(难!!!)

1.  流,xml文档。

2.  数据库形式。

 

SQLite数据库:

创建SQLite数据库,使用。

 

应用访问数据库的主要操作步骤:

1.创建或打开数据库

2.创建表

3.增删改查操作

4.关闭数据库

 

Android.database.sqlite,SQLiteOpenHelper的抽象类,不能创建对象。

因此创建类,继承这个类——这个类的作用:数据库创建,表的创建。

 

 

打开数据库:

getWritableDatabase————可读写

getReadableDatabase————只读

 


MVC模型

model:数据层:放数据相关的内容————数据交换

control:链接model层和view层

view:根据不同model层提供的数据,进行界面的切换

 

 

1.  创建数据库帮助类:DBhelper.java

2.  继承extendsSQLiteOpenHelper(需要重写抽象类的抽象方法)

3.  添加AddConstructor:构造器

    super(context, name, factory,version);

   context:XXXactivity.this

   name:数据库名字

   factory:游标工厂(接口)

   version:版本

   本次我们只使用:context和name

    A.创建私有变量:

     privatefinalstatic String DBNAME="food.db";

   B.修改:

   public DBHelper(Context context) {

         super(context, DBNAME, null, 1);

                }

4.  重写抽象方法

Addunimplemented methods

5.  onCreate(SQLiteDatabase arg0)——创建表格的方法,参见需求说明

注意空格!!!!!注意逗号!!!!!!!!

     String sqlStr="create  table   "+TABNAME+"(" +

                "id integer primary key autoincrement," +

                "name varchar(20),"+

                "cuisine varchar(20),"+

                "picPath varchar(80),"+

                "material varchar(20),"+

                "ingredient varchar(20)"+

                "cookingStep varchar(20)"+

                "audioPath varchar(80)"+

                "videoPath varchar(80))";

         db.execSQL(sqlStr);//做数据库版本更新

onUpgrade(SQLiteDatabasearg0, int arg1, int arg2)

 

6.  在mainActivity中添加代码:创建数据库类帮助对象

DBHelper db=new DBHelper(this);

7.  在mainActivity中:打开数据库

        db.getWritableDatabase();

 



模块化代码:封装好的

导出db文件

DDMS->FIleExplorer->data->data->XXX.demo20150304->databases->food.db


d开头可以访问

l开头不可访问

 

 

利用Dao的方法

1.  在model包中创建Dao.java文件

2.  添加代码:

privateDBHelper db;

private Context context;//代表activity

3.  创建构造方法(source->Generateconstructor using fields)

勾选:context,不要勾选db

4.  编写打开数据库的方法

//打开数据库的方法

public void openDB(){

    db = new DBHelper(context);

    db.getReadableDatabase();   

}

5.  编写关闭数据库的方法

//关闭数据库

public void closeDB(){

    if(db!=null){

       db.close();

    }

}

6.  数据库添加

//数据库添加

    public void add(){

       //打开数据库

       openDB();

       //操作数据库

      

       //关闭数据库

       closeDB();

      

     }

7.  在MainActivity.java中创建dao对象

Dao dao=new Dao(MainActivity.this);

dao.add();

 

 

[Android开发学习] day03

标签:

原文地址:http://blog.csdn.net/moweiyang0214/article/details/44087307

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!