例如,外层 RecyclerView 显示的是一个 BLE 蓝牙设备的 Service 列表; 内存嵌套的 RecyclerView 显示的各个 Service 所包含的 Characteristic 特性列表。
点击展开 Service,显示其所包含的特性。
RecyclerView 嵌套
- 首先在父级 RecyclerView 的 Item Layout 中定义一个子 RecyclerView 控件
- 嵌套的 RecyclerViewAdapter 绑定逻辑,在父级 RecyclerViewAdapter 的 onBindViewHolder 中实现
item:BluetoothGattCharacteristic
TODO
- [X] 添加 toggle button
- [X] service to BluetoothGattCharacteristic map in ViewModel
- [X] toggle button 添加 service 点击事件
- [X] 点击 service,拉取其所有的特性列表
- [X] 缓存特性列表,存储于 ViewModel 中,下次点击时如果已有内容,就不再拉取
- [X] 加入嵌套的 RecyclerView 展示特性列表
- [X] 将 ViewModel 作为参数传给父级 adapter,方便子 adapter 中读取 view model 中的数据
- [X] 获取特性的名称
toggle button
android studio 中内置了 toggle button。但是看起来有点麻烦。不如:
//show/hide boxes panel
var expansion: Boolean = false
expand_up.setOnClickListener {
if (!expansion) {
expand_up.setImageResource(R.drawable.collapse)
boxes_panel.visibility = View.VISIBLE
expansion = true
}
else{
expand_up.setImageResource(R.drawable.expand)
boxes_panel.visibility = View.GONE
expansion = false
}
}
参考
- Introduction to Android Nested RecyclerView https://www.section.io/engineering-education/android-nested-recycler-view/
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式