我在我的适配器和自定义视图中使用了以下View Binding扩展函数。
inline fun <T : ViewBinding> ViewGroup.viewBinding(crossinline bindingInflater: (LayoutInflater, ViewGroup, Boolean) -> T) =
bindingInflater.invoke(LayoutInflater.from(this.context), this, true)val binding = viewBinding(ComponentButtonBinding::inflate)对于自定义视图,它工作得很好,但是对于适配器,我需要调用中的布尔值为false。我怎样才能修复这个问题,让这个函数同时适用于这两个函数呢?
发布于 2020-12-22 17:02:56
您也可以将一个布尔变量传递给扩展函数。如果主要使用true,您可能希望将缺省值设置为true,但这取决于您。
inline fun <T : ViewBinding> ViewGroup.viewBinding(crossinline bindingInflater: (LayoutInflater, ViewGroup, Boolean) -> T, attachToParent: Boolean = true) =
bindingInflater.invoke(LayoutInflater.from(this.context), this, attachToParent)
val binding = viewBinding(ComponentButtonBinding::inflate)
val binding = viewBinding(ComponentButtonBinding::inflate, false)发布于 2021-11-17 08:00:36
扩展功能:
inline fun <T : ViewBinding> AppCompatActivity.viewBinding(
crossinline bindingInflater: (LayoutInflater) -> T) =
lazy(LazyThreadSafetyMode.NONE) {
bindingInflater.invoke(layoutInflater)
}示例:
class MainActivity : AppCompatActivity() {
private val binding by viewBinding(MainActivityBinding::inflate)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.button.onClick {
showToast("hello world!")
}
}https://stackoverflow.com/questions/65405721
复制相似问题