Android(10)——ExpandableListView,Application全局应用

Android

安卓开发者指南:https://developer.android.google.cn/guide

1 ExpandableListView

1.1 属性、方法

继承自ListVIew,用于分组的ListView。二级菜单下拉。
常用属性
1.groupIndicator
2.childIndicator

3.childDivider

常用方法
1.setAdapter(ExpandableListAdapter)
2.setOnGroupClickListener
3.setOnChildClickListener
4.setOnGroupCollapseListener
5.setOnGroupExpandListener

1.2 demo

  1. 布局文件

  2. MainActivity

  3. bean
    Chapter.java
    int id; String name; List< ChapterItem> children = new ArrayList<>();
    getter/setter方法,构造方法

    ChapterItem.java
    int id; String name; int pid;
    getter/setter方法,构造方法

  4. 适配器实现

    新建布局item_parent_chapter:< TextView>
    item_child_chapter:< TextView>

  5. 模拟数据
    ChapterLab.java

  6. ExpandableListView属性方法设置,MainActivity

  7. 数据逻辑处理,网络数据处理
    doInBackground()一般用于获取网络资源等耗时操作,执行完之后系统会自动调用onPostExecute()接收其返回值。一般负责更新UI线程等操作。
    在这里插入图片描述
    在这里插入图片描述
    HttpUtils.java
    在这里插入图片描述
    在这里插入图片描述

后续未完…

2 Application类

Application是维护应用全局状态的基类。Android系统会在启动应用进程时创建一个Application对象。
getApplication(), getContextApplication()

2.1 自定义Application类

我们可以扩展Application类,让Android系统使用自定义的Application类来创建Application对象。
➢创建Application子类
➢在清单文件AndroidManifest.xml中为application标签添加android:name属性,值就是刚刚新建的子类。

2.2 Application对象

  1. Application对象的生命周期
    Application对象诞生于其它任何组件对象之前,并且一直存活,直到应用进程结束。

  2. Application对象的回调函数
    Application对象由Android系统管理,它的回调函数都运行于UI线程。
    ➢onCreate:初始化操作
    ➢onConfigurationChanged:系统配置变更(屏幕方向、系统语言变化)时调用
    ➢onLowMemory:系统内存吃紧时调用

  3. Application对象的作用
    Application对象全局可访问,且全程陪同应用进程。所以特别适合完成以下任务:
    ➢共享全局状态
    ➢初始化全应用所需的服务

2.3 静态单例

静态单例也可以实现应用全局状态的共享,以共享otto的Bus对象为例,分别
➢用Application对象实现共享
➢用静态单例实现共享

register()方法:通过Bus类的此方法来实现某个类的注册,这样Bus总线便可以通过此方法来查找注册的类;
unregister()方法:通过此方法实现从Bus事件总线中注销。

Application对象 VS 静态单例
➢静态单例模块化(程序的松耦合模块化开发)程度更好
➢Application就是一个context,所以有访问资源的能力
➢静态单例可以接受context参数
➢Application对象能接收系统回调,自动知悉系统环境变化,普通单例不行
➢Application对象的生命周期由系统控制

2.4 Otto

一、Otto是什么:
Otto是基于Guava项目的Android系统的一个Event Bus模式类库,如果在Android程序开发的过程中想要不同的组件之间进行有效的通信可以使用这个库。通过Otto库可以降低程序之间的耦合性。
二、Otto解决的问题:
1、用来简化应用程序组件之间的通讯,例如复杂的界面跳转ActivityA跳转到ActivityB,ActivityB跳转到ActivityC,此时需要从ActivityC中获取到用户的操作数据返回到ActivityA和ActivityB中显示,或者在Activity中有多个Fragment,其中一个Fragment里的数据变化需要同步更新其它Fragment的数据变化,这时候如果使用Interface的方式进行它们之间的交互则比较复杂,耦合度也高。
2、简化了程序,使代码变得更加优美。
三、Otto如何使用?
Otto采用注解定义订阅 / 发布者角色的方式:
@Subscribe:标明其为订阅者。通过此注解来告诉Bus总线,该方法订阅了一个事件,同时Bus总线可以通过此注解来找到需要调用的方法;
@Produce:标明其为发布者;
注意,被@Subscribe , @Produce注解的方法必须定义在直接的作用类上,而不能定义在基类。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章