Android RecyclerView 嵌套显示 BLE 蓝牙 Service 的 Characteristic 子项

文章目录

    例如,外层 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式