groupName.add(“统计1”)

groupName.add(“统计2”)

return groupName

}

3.1 StatisticsAdapter.kt

3.1.1 RootNodeProvider.kt,点击item

override fun onClick(helper: BaseViewHolder, view: View, data: BaseNode, position: Int) {

getAdapter()!!.expandOrCollapse(position)

}

3.1.2 StatisticsNodeProvider.kt

override fun onClick(helper: BaseViewHolder, view: View, data: BaseNode, position: Int) {

val entity: StatisticsNode = data as Stati
sticsNode

if (“2” == entity.classity) {

val intent = Intent(MyApplication.context, StatisticsActivity::class.java)

context?.startActivity(intent)

}

}

4.activity_expandable_listview.xml,这是扩展二级列表的

<ExpandableListView

android:id="@+id/elvContent"

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:groupIndicator="@null" />

5.StatisticsActivity.kt

5.1

fun initView() {

adapter = DetailExpandableListAdapter(this)

elvContent.setAdapter(adapter)

}

5.2 可以自己设置数据,注意:必须要有规律,代码(注释说明)如下

fun initDatas() {

//"1"表示标题

var sc = SitCode(1, “1”, “一栋宿舍”);list.add(sc)

//"1A"表示第一组

sc = SitCode(2, “1A”, “宿舍2001”);list.add(sc)

//“1AA”,“1AB”,“1AC”,"1AD"表示子选项

sc = SitCode(3, “1AA”, “小红”);list.add(sc)

sc = SitCode(4, “1AB”, “小彬”);list.add(sc)

sc = SitCode(5, “1AC”, “小强”);list.add(sc)

sc = SitCode(6, “1AD”, “小红”);list.add(sc)

//"1B"表示第二组

sc = SitCode(7, “1B”, “宿舍2002”);list.add(sc)

//“1BA”,"1BB"表示子选项

sc = SitCode(8, “1BA”, “小可”);list.add(sc)

sc = SitCode(9, “1BB”, “小雪”);list.add(sc)

sc = SitCode(10, “1BC”, “小飞”);list.add(sc)

//"1C"表示第三组

sc = SitCode(11, “1C”, “宿舍2003”);list.add(sc)

//“1CA”,“1CB”,"1CC"表示子选项

sc = SitCode(12, “1CA”, “小和”);list.add(sc)

sc = SitCode(13, “1CB”, “小杨”);list.add(sc)

sc = SitCode(14, “1CC”, “小一”);list.add(sc)

//"1D"表示第四组

sc = SitCode(15, “1D”, “宿舍2004”);list.add(sc)

//"2"表示标题

sc = SitCode(16, “2”, “二栋宿舍”);list.add(sc)

//"2A"表示第五组

sc = SitCode(17, “2A”, “宿舍2005”);list.add(sc)

//"2B"表示第六组

sc = SitCode(18, “2B”, “宿舍2006”);list.add(sc)

//“2BA”,“2BB”,"1CC"表示子选项

sc = SitCode(19, “2BA”, “小山”);list.add(sc)

sc = SitCode(20, “2BB”, “小梅”);list.add(sc)

//"2C"表示第七组

sc = SitCode(21, “2C”, “宿舍2007”);list.add(sc)

//"3"表示标题

sc = SitCode(22, “3”, “三栋宿舍”);list.add(sc)

//"3A"表示第八组

sc = SitCode(23, “3A”, “宿舍2008”);list.add(sc)

//"3B"表示第九组

sc = SitCode(24, “3B”, “宿舍2009”);list.add(sc)

//"3C"表示第十组

sc = SitCode(25, “3C”, “宿舍2010”);list.add(sc)

//"4"表示标题

sc = SitCode(26, “4”, “四栋宿舍”);list.add(sc)

5.2.1 我做开发时就用sqlite数据库上设置数据比较好,需要和SQL Server一致,如下图

如何用代码获取sqlite数据库的数据,你需要的话,可以点击

Kotlin开发 如何获取SQLite数据库上自己创建规律的可扩展二级列表数据

5.3 代码(注释说明)如下

for (sitcode in list) {

val code = sitcode.code

//如果code是“1”或者“1A”或者“1AB”

when (code.length) {

//组数据给groups,groups包括有标题和组

//"1"的长度是1就给groups赋值

1 -> groups.add(sitcode)

//"1A"的长度是2就给groups赋值

2 -> groups.add(sitcode)

else -> {

//1AB(子选项)的长度是3就给对应的group赋值

val groupCode = code.substring(0, 2)

var childs = groupChilds[groupCode]

if (childs == null) {

childs = ArrayList()

groupChilds[groupCode] = childs

}

childs.add(sitcode)

}

}

}

5.4 获取指定组位置处的组数据

override fun getGroupView(groupPosition: Int, isExpanded: Boolean, convertView: View?, parent: ViewGroup?): View {

var convertView = convertView

var viewHolder: ViewHolder = ViewHolder.getViewHolder(inflater, convertView, parent, R.layout.item_ser_detail)

val sitCode = getGroup(groupPosition)

convertView = viewHolder.convertView

val iv: ImageView = viewHolder.getView(R.id.iv_ser) as ImageView

//如果sitCode.code=“1A”(组)

if (sitCode.code.length == 2){

//如果“1A”有子选项“1AA”

if (list[sitCode.id].code.length == 3 ){

//把箭头开了

iv.visibility = View.VISIBLE

}

}else{

//如果“1A”没有子选项,箭头就隐去

iv.visibility = View.GONE

}

er.convertView

val iv: ImageView = viewHolder.getView(R.id.iv_ser) as ImageView

//如果sitCode.code=“1A”(组)

if (sitCode.code.length == 2){

//如果“1A”有子选项“1AA”

if (list[sitCode.id].code.length == 3 ){

//把箭头开了

iv.visibility = View.VISIBLE

}

}else{

//如果“1A”没有子选项,箭头就隐去

iv.visibility = View.GONE

}

Kotlin ExpandableListView可扩展二级列表,大厂安卓面试真题精选相关推荐

  1. 2021大厂Java面试真题(一)

    2021大厂Java面试真题(一) 大厂面试的基本流程 以下是一些大厂面试的基本流程,大家可以参考下: 字节跳动 阿里 腾讯 网易游戏 面试前需要准备: \1. **Java 八股文:**了解常考的题 ...

  2. 2021大厂Java面试真题(六)

    2021大厂Java面试真题(六) * * 2021 [华为]面试真题* * : * * 1.Java 常用集合及特点?* * List:ArrayList.LinkedList.Vector.Sta ...

  3. 2021大厂Java面试真题(二)

    2021大厂Java面试真题(二) 2021 [阿里]面试真题: 1.TCP 和 UDP 区别? TCP 基于连接,UDP 基于无连接. TCP 要求系统资源较多,UDP 较少. UDP 程序结构较简 ...

  4. 8.牛批了 Android 2022高级 资深面试题 一线大厂和二线大厂面试真题精选 (腾讯 附答案)第八套 35k+

    笔者是面霸,面试500+场       当过考官:面过别人500+场     去过500强,也呆过初创公司. 斩获腾讯.华为.字节跳动,蚂蚁金服,OPPO,美团,安卓岗offer!我有一套速通大厂技巧 ...

  5. 2022最新出炉的互联网大厂软件测试面试真题(阿里、京东、百度、美团、腾讯.......)

     先前看过小编文章的小伙伴都知道.小编会时不时发一些互联网大厂(阿里.京东.百度.美团.腾讯.......)的面试真题出来.今天小编一一把它整理了出来.结尾有彩蛋 1.性能测试关注的指标是什么 从外部 ...

  6. 2.牛批了 Android 2021中高级面试题 一线大厂和二线大厂面试真题精选 (京东 附答案)第二套 22k+

    笔者是面霸,面试500+场       当过考官:面过别人500+场     去过500强,也呆过初创公司. 斩获腾讯.美团,字节跳动,蚂蚁金服,华为.OPPO,offer!我有一套速通大厂技巧分享给 ...

  7. 6.牛批了 Android 2021中高级面试题 一线大厂和二线大厂面试真题精选 (小米 附答案)第三套 28k+

    笔者是面霸,面试500+场       当过考官:面过别人500+场     去过500强,也呆过初创公司. 斩获腾讯.华为.字节跳动,蚂蚁金服,OPPO,美团,安卓岗offer!我有一套速通大厂技巧 ...

  8. 7.牛批了 Android 2022高级资深面试题 一线大厂和二线大厂面试真题精选 (大疆 附答案)第七套 30k+

    笔者是面霸,面试500+场       当过考官:面过别人500+场     去过500强,也呆过初创公司. 斩获腾讯.华为.字节跳动,蚂蚁金服,OPPO,美团,安卓岗offer!我有一套速通大厂技巧 ...

  9. 9.牛批了 Android 2022高级 资深面试题 一线大厂和二线大厂面试真题精选 (字节跳动 附答案)第九套 38k+

    笔者是面霸,面试500+场       当过考官:面过别人500+场     去过500强,也呆过初创公司. 斩获腾讯.华为.字节跳动,蚂蚁金服,OPPO,美团,安卓岗offer!我有一套速通大厂技巧 ...

最新文章

  1. android webview详情,Android中的WebView详细介绍
  2. 麻省理工和 IBM 合作创立 Watson AI 实验室,谨慎推进 AI 研究
  3. 安装Windows digits问题列表
  4. 逆波兰计算器android源码简书,计算器的核心算法-JavaScript实现(逆波兰表达式)...
  5. 针对Parse error: syntax error, unexpected T_PUBLIC in D:报错提醒
  6. web端功能测试总结(一)
  7. MyBatis框架 接口绑定、线程绑定
  8. pythonifnotnone_python中if not x: 和 if x is not None: 和 if not x is None的使用和区别
  9. ios 重复引用 静态库_Swift 制作静态库
  10. MyCat分布式数据库集群架构工作笔记0006---Mycat启动
  11. SpringMVC+Spring3+Hibernate4
  12. matlab全局变量_MATLAB笔记(一):工具箱的卸载、阻尼振动波形图程序
  13. Oracle闩:Cache Buffers chains
  14. 深入理解HashMap底层数据结构
  15. Excel数据透视表数据源自动更新方法
  16. 问题 A: Beer Barrels
  17. libuv之mingw64环境搭建及编译Libuv
  18. 男人40岁后的健康生活方式
  19. python实现自动化查谁没交作业
  20. 云宏大讲坛 | Ceph分布式存储高性能设计

热门文章

  1. 利用Jlink给stm32系列单片机下载Hex和Bin文件
  2. 远程桌面不能传输文件或复制粘贴文件
  3. 作为一个IT部门经理.....
  4. 康耐视visionpro彩色相机如何做白平衡?
  5. linux 文件/目录名 颜色
  6. DNS协议的学习与实现
  7. JDK1.8新增时间日期API
  8. 前端 html 基础 jQuery css
  9. 日程管理系统——UML建模
  10. PL/SQL Developer,大小写转换