如果今天的資料量是一組一組,有個 Group 底下有專屬這個 Group 的資料,這時候不管是 ListView 或是 RecyclerView 都無法達到這樣的效果,這時候 android 有個原生的好東西可以使用 - ExpandableListView。
跟 RecyclerView 一樣 ExpandableListView 也需要一個 Adapter 來傳遞資料,而這 Adapter 需要繼承 BaseExpandableListAdapter , 而 BaseExpandableListAdapter 是個抽象類別,它需要繼承的 Class 為它實作 10 個 Function。
override fun getGroup(groupPosition: Int): Any {
}
override fun isChildSelectable(groupPosition: Int, childPosition: Int): Boolean {
}
override fun hasStableIds(): Boolean {
}
override fun getGroupView(groupPosition: Int, isExpanded: Boolean, convertView: View?, parent: ViewGroup?): View {
}
override fun getChildrenCount(groupPosition: Int): Int {
}
override fun getChild(groupPosition: Int, childPosition: Int): Any {
}
override fun getGroupId(groupPosition: Int): Long {
}
override fun getChildView(
groupPosition: Int,
childPosition: Int,
isLastChild: Boolean,
convertView: View?,
parent: ViewGroup?
): View {
}
override fun getChildId(groupPosition: Int, childPosition: Int): Long {
}
override fun getGroupCount(): Int {
}
這 10 個 Function 的意思我們明天再一一做介紹,其中有幾個和 RecyclerView.Adapter 裡的 Function 很類似,只是 ExpandableListView 有著更複雜的結構,所以必須多幾個 Function 來協助。