Kotlin ExpandableListView可扩展二级列表,大厂安卓面试真题精选
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可扩展二级列表,大厂安卓面试真题精选相关推荐
- 2021大厂Java面试真题(一)
2021大厂Java面试真题(一) 大厂面试的基本流程 以下是一些大厂面试的基本流程,大家可以参考下: 字节跳动 阿里 腾讯 网易游戏 面试前需要准备: \1. **Java 八股文:**了解常考的题 ...
- 2021大厂Java面试真题(六)
2021大厂Java面试真题(六) * * 2021 [华为]面试真题* * : * * 1.Java 常用集合及特点?* * List:ArrayList.LinkedList.Vector.Sta ...
- 2021大厂Java面试真题(二)
2021大厂Java面试真题(二) 2021 [阿里]面试真题: 1.TCP 和 UDP 区别? TCP 基于连接,UDP 基于无连接. TCP 要求系统资源较多,UDP 较少. UDP 程序结构较简 ...
- 8.牛批了 Android 2022高级 资深面试题 一线大厂和二线大厂面试真题精选 (腾讯 附答案)第八套 35k+
笔者是面霸,面试500+场 当过考官:面过别人500+场 去过500强,也呆过初创公司. 斩获腾讯.华为.字节跳动,蚂蚁金服,OPPO,美团,安卓岗offer!我有一套速通大厂技巧 ...
- 2022最新出炉的互联网大厂软件测试面试真题(阿里、京东、百度、美团、腾讯.......)
先前看过小编文章的小伙伴都知道.小编会时不时发一些互联网大厂(阿里.京东.百度.美团.腾讯.......)的面试真题出来.今天小编一一把它整理了出来.结尾有彩蛋 1.性能测试关注的指标是什么 从外部 ...
- 2.牛批了 Android 2021中高级面试题 一线大厂和二线大厂面试真题精选 (京东 附答案)第二套 22k+
笔者是面霸,面试500+场 当过考官:面过别人500+场 去过500强,也呆过初创公司. 斩获腾讯.美团,字节跳动,蚂蚁金服,华为.OPPO,offer!我有一套速通大厂技巧分享给 ...
- 6.牛批了 Android 2021中高级面试题 一线大厂和二线大厂面试真题精选 (小米 附答案)第三套 28k+
笔者是面霸,面试500+场 当过考官:面过别人500+场 去过500强,也呆过初创公司. 斩获腾讯.华为.字节跳动,蚂蚁金服,OPPO,美团,安卓岗offer!我有一套速通大厂技巧 ...
- 7.牛批了 Android 2022高级资深面试题 一线大厂和二线大厂面试真题精选 (大疆 附答案)第七套 30k+
笔者是面霸,面试500+场 当过考官:面过别人500+场 去过500强,也呆过初创公司. 斩获腾讯.华为.字节跳动,蚂蚁金服,OPPO,美团,安卓岗offer!我有一套速通大厂技巧 ...
- 9.牛批了 Android 2022高级 资深面试题 一线大厂和二线大厂面试真题精选 (字节跳动 附答案)第九套 38k+
笔者是面霸,面试500+场 当过考官:面过别人500+场 去过500强,也呆过初创公司. 斩获腾讯.华为.字节跳动,蚂蚁金服,OPPO,美团,安卓岗offer!我有一套速通大厂技巧 ...
最新文章
- android webview详情,Android中的WebView详细介绍
- 麻省理工和 IBM 合作创立 Watson AI 实验室,谨慎推进 AI 研究
- 安装Windows digits问题列表
- 逆波兰计算器android源码简书,计算器的核心算法-JavaScript实现(逆波兰表达式)...
- 针对Parse error: syntax error, unexpected T_PUBLIC in D:报错提醒
- web端功能测试总结(一)
- MyBatis框架 接口绑定、线程绑定
- pythonifnotnone_python中if not x: 和 if x is not None: 和 if not x is None的使用和区别
- ios 重复引用 静态库_Swift 制作静态库
- MyCat分布式数据库集群架构工作笔记0006---Mycat启动
- SpringMVC+Spring3+Hibernate4
- matlab全局变量_MATLAB笔记(一):工具箱的卸载、阻尼振动波形图程序
- Oracle闩:Cache Buffers chains
- 深入理解HashMap底层数据结构
- Excel数据透视表数据源自动更新方法
- 问题 A: Beer Barrels
- libuv之mingw64环境搭建及编译Libuv
- 男人40岁后的健康生活方式
- python实现自动化查谁没交作业
- 云宏大讲坛 | Ceph分布式存储高性能设计