|
|
@@ -27,6 +27,7 @@ class KeyboardSelectComponent @JvmOverloads constructor(
|
|
|
) : BaseUIComponent(context, attrs, defStyleAttr) {
|
|
|
private lateinit var vBackBtn: View
|
|
|
private lateinit var vList: RecyclerView
|
|
|
+ private lateinit var vSaveBtn: View
|
|
|
|
|
|
private lateinit var mListItems: Items
|
|
|
private lateinit var mListAdapter: MultiTypeAdapter
|
|
|
@@ -38,6 +39,7 @@ class KeyboardSelectComponent @JvmOverloads constructor(
|
|
|
override fun findView(view: View) {
|
|
|
vBackBtn = view.findViewById(R.id.back_btn)
|
|
|
vList = view.findViewById(R.id.list)
|
|
|
+ vSaveBtn = view.findViewById(R.id.save_btn)
|
|
|
}
|
|
|
|
|
|
@SuppressLint("NotifyDataSetChanged")
|
|
|
@@ -45,25 +47,30 @@ class KeyboardSelectComponent @JvmOverloads constructor(
|
|
|
vBackBtn.click {
|
|
|
// 关闭选择页
|
|
|
}
|
|
|
- mListItems = Items()
|
|
|
- mListAdapter = MultiTypeAdapter(mListItems).apply {
|
|
|
- // 空占位条目
|
|
|
- register(EmptyPlaceholderModel::class.java, EmptyPlaceholderViewBinder())
|
|
|
- // 键盘条目
|
|
|
- register(KeyboardSelectModel::class.java, KeyboardSelectViewBinder { item ->
|
|
|
- // 先全部取消选中,再选中当前设置的键盘
|
|
|
- mListItems.forEachIndexed { index, item ->
|
|
|
- if (item is KeyboardSelectModel) {
|
|
|
- item.isSelected = false
|
|
|
- }
|
|
|
- }
|
|
|
- val targetPosition = mListItems.indexOf(item)
|
|
|
- val targetItem = mListItems[targetPosition] as KeyboardSelectModel
|
|
|
- targetItem.isSelected = true
|
|
|
- notifyDataSetChanged()
|
|
|
- })
|
|
|
+ vSaveBtn.click {
|
|
|
+ // 保存设置
|
|
|
}
|
|
|
+
|
|
|
+ // 配置列表
|
|
|
vList.apply {
|
|
|
+ mListItems = Items()
|
|
|
+ mListAdapter = MultiTypeAdapter(mListItems).apply {
|
|
|
+ // 空占位条目
|
|
|
+ register(EmptyPlaceholderModel::class.java, EmptyPlaceholderViewBinder())
|
|
|
+ // 键盘条目
|
|
|
+ register(KeyboardSelectModel::class.java, KeyboardSelectViewBinder { item ->
|
|
|
+ // 先全部取消选中,再选中当前设置的键盘
|
|
|
+ mListItems.forEachIndexed { index, item ->
|
|
|
+ if (item is KeyboardSelectModel) {
|
|
|
+ item.isSelected = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ val targetPosition = mListItems.indexOf(item)
|
|
|
+ val targetItem = mListItems[targetPosition] as KeyboardSelectModel
|
|
|
+ targetItem.isSelected = true
|
|
|
+ notifyDataSetChanged()
|
|
|
+ })
|
|
|
+ }
|
|
|
layoutManager = GridLayoutManager(context, Constants.KEYBOARD_SELECT_SPAN_COUNT)
|
|
|
adapter = mListAdapter
|
|
|
addItemDecoration(
|