上一期学习了AutoCompleteTextView和MultiAutoCompleteTextView,你已经掌握了吗?本期开始学习ExpandableListView的使用。
一、认识ExpandableListView
ExpandableListView 是 ListView 的子类,它在普通ListView的基础上进行了扩展,它把应用中的列表项分为几组,每组里又可包含多个列表项。
ExpandableListView的用法与普通 ListView的用法非常相似,只是 ExpandableListView所显示的列表项应 该由 ExpandableListAdapter 提供。ExpandableListAdapter 也是一个接口,该接口下提供的类继承关系图如下图所示。
与Adapter类似的是,实现 ExpandableListAdapter也有如下三种常用方式。
· 扩展 BaseExpandableListAdapter 实现 ExpandableListAdapter。
· 使用 SimpleExpandableListAdapter 将两个 List 集合包装成 ExpandableListAdapter。
· 使用 SimpleCursorTreeAdapter 将 Cursor 中的数据包装成 SimpleCursorTreeAdapter。
ExpandableListView支持的常用XML属性如下:
· android:childDivider:指定各组内子类表项之间的分隔条,图片不会完全显示, 分离子列表项的是一条直线。
· android:childIndicator:显示在子列表旁边的Drawable对象,可以是一个图像。
· android:childIndicatorEnd:子列表项指示符的结束约束位置。
· android:childIndicatorLeft:子列表项指示符的左边约束位置。
· android:childIndicatorRight:子列表项指示符的右边约束位置。
· android:childIndicatorStart:子列表项指示符的开始约束位置。
· android:groupIndicator:显示在组列表旁边的Drawable对象,可以是一个图像。
· android:indicatorEnd:组列表项指示器的结束约束位置。
· android:indicatorLeft:组列表项指示器的左边约束位置。
· android:indicatorRight:组列表项指示器的右边约束位置。
· android:indicatorStart:组列表项指示器的开始约束位置。
二、ExpandableListView 示例
接下来通过一个简单的示例程序来学习ExpandableListView的使用方法。
继续使用WidgetSample工程的listviewsample模块,在app/main/res/layout/目录下创建expandlist_layout.xml文件,在其中填充如下代码片段:
[代码]xml代码:
01 02 03 04 05 06 07 08 09 10 |
|
在res/layout/目录创建expendlist_group.xml文件,代码如下:
[代码]xml代码:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
在res/layout/目录创建expendlist_item.xml文件,代码如下:
[代码]xml代码:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
新建MyExpandableListViewAdapter类,继承ExpandableListViewAdapter,并重写其方法,代码如下:
[代码]java代码:
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
|
上面程序的关键代码就是扩展BaseExpandableListAdapter来实现ExpandableListAdapter, 当扩展BaseExpandableListAdapter时,关键是实现如下4个方法。
· getGroupCount():该方法返回包含的组列表项的数量。
· getGroupView():该方法返回的View对象将作为组列表项。
· getChildrenCount():该方法返回特定组所包含的子列表项的数量。
· getChildView():该方法返回的View对象将作为特定组、特定位置的子列表项。
新建ExpandableListActivity.java文件,加载上面新建的布局文件,具体代码如下:
[代码]java代码:
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 |
|
上述代码为ExpandableListView设置Adapter,并为ExpandableListView设置事件监听器。
修改程序启动的Activity,运行程序,可以看到下图所示界面效果。
点击组的时候,会将其子元素打开,如上图右侧所示,单击其中的列表会弹出消息提示。
至此,关于ExpandableListView的简单使用学习完毕,更多属性和方法建议多加练习并掌握。
今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!