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

更新日期: 2022-11-19 阅读次数: 1380 字数: 255 分类: Android

例如,外层 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 聊聊, 查看更多联系方式