将FindViewById转换为Binding



嗨,伙计们,我怎么能改变这个(FindviewById)数据绑定,因为我有问题调用列表的视图,所以我需要将(fvbi)更改为(binding)或当我使用findviewbyid

时,我可以访问我的视图吗?

import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setListeners()
}// end of on create
private fun setListeners() {
val clickableViews: List<View> =
listOf()
for (item in clickableViews) {
item.setOnClickListener { makeColored(it) }
}
}

private fun makeColored(view: View) {
when (view.id) {
// Boxes using Color class colors for background
R.id.box_one_text -> view.setBackgroundColor(Color.DKGRAY)
R.id.box_two_text-> view.setBackgroundColor(Color.GRAY)
// Boxes using Android color resources for background
R.id.box_three_text -> view.setBackgroundResource(android.R.color.holo_green_light)
R.id.box_four_text -> view.setBackgroundResource(android.R.color.holo_green_dark)
R.id.box_five_text -> view.setBackgroundResource(android.R.color.holo_green_light)
else -> view.setBackgroundColor(Color.LTGRAY)
}
}
}

可以使用findViewById访问视图

val clickableViews: List<View> =
listOf(findViewById(R.id.box_one_text), ...)

或者视图绑定你可以这样做,

val clickableViews: List<View> =
listOf(binding.boxOneText, ...)

现在使用绑定结构更有意义,并且节省了大量代码。例如:如果该活动被称为HomeActivity,它将是ActivityHomeBinding

build.gradle(模块)

buildFeatures {
viewBinding true
dataBinding true
}

MainActivity

private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.apply {
//eg:
button.setOnClickListener{
}
}
}

相关内容

最新更新