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註解的方法必須定義在直接的作用類上,而不能定義在基類。

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