程序员人生 网站导航

[Android开发学习] day03

栏目:综合技术时间:2015-04-09 09:13:22

Day03

下拉列表相干

1、自动补全组件:Autocompletetextview

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

<AutoCompleteTextView

                    android:id="@+id/auto"

                    android:completionThreshold="1"/>

 

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

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

 

适配器创建并使用步骤

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

1.准备数据源

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

2.声明1个AutoCompleteTextView组件:

private AutoCompleteTextViewmAuTx;

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);

 

 

3、imageview设置数据源效果

1.声明要绑定的组件

private ImageButton mDrop;

2.初始化组件

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

3.对组件设置OnClickListener

mDrop.setOnClickListener(newOnClickListener() {

                @Override

                publicvoidonClick(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,

删除:returnsuper.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"

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

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

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

 

自定义menu

使用单1menu复制便可。

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.  在所要触发事件对应的XXXActivity.java中添加:

onOptionsItemSelected(MenuItemitem)――函数方法

2.onOptionsItemSelected方法中添加

   switch (key) {

   casevalue:

     

      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:"返回前1页"

Duration:Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG

 

Toast.makeText(MenuActivity.this,"返回前1页", 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 StringDBNAME="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.  添加代码:

privateDBHelperdb;

private Contextcontext;//代表activity

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

勾选:context,不要勾选db

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

//打开数据库的方法

publicvoid openDB(){

    db =new DBHelper(context);

    db.getReadableDatabase();   

}

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

//关闭数据库

publicvoid closeDB(){

    if(db!=null){

       db.close();

    }

}

6.  数据库添加

//数据库添加

    public void add(){

       //打开数据库

      openDB();

      //操作数据库

      

       //关闭数据库

      closeDB();

      

     }

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

Dao dao=new Dao(MainActivity.this);

dao.add();

 

 

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐