【发布时间】:2021-12-24 23:06:37
【问题描述】:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
select(viewBinding.btnPearKind1)
select(viewBinding.btnPearKind2)
select(viewBinding.btnPearKind3)
select(viewBinding.btnPearKind4)
select(viewBinding.btnPearKind5)
select(viewBinding.btnPearKind6)
}
单击一个按钮会更改其他 5 个按钮。
我使用这些功能。
fun select(btn: Button){
btn.setOnClickListener {
val kind = listOf("1","2","3","4","5","6")
for(i in kind) {
if (i != btn.tag){
viewBinding.kindGrid.findViewWithTag<View>(i).backgroundTintList =
ContextCompat.getColorStateList(it.context, R.color.btn_color_off)
}else{
viewBinding.kindGrid.findViewWithTag<View>(i).backgroundTintList =
ContextCompat.getColorStateList(it.context, R.color.btn_color)
}
}
}
}
当我用视图组合编写它时,重复的代码是这样的。 我怎样才能减少它?
【问题讨论】:
-
您想要的是,每当按下按钮时,具有相同标签的网格应该将颜色更改为 R.color.btn_color,其他的更改为 R.color.btn_color_off。正确的?另外,
kindGrid是 recyclerView 还是什么? -
我不认为视图绑定会帮助你解决这个问题,因为它没有办法将视图分组到一个集合中。
-
@ArpitShukla kindGrid 是 GridLayout!是的!
-
@Tenfour04 是的.. 我想是的。
标签: android kotlin android-viewbinding