有没有更通用的方法来初始化这两个初始化行?
private var _binding: MyFragmentViewBinding? = null
private val binding get() = _binding!!我们应该在每次绑定时都调用
binding.cancelButton.setOnClickListener { }
binding.homeButton.setOnClickListener { }
binding.aboutButton.setOnClickListener { }还是创建类变量?
cancelButton = binding.cancelButton
binding.cancelButton.setOnClickListener{}而且,我们是否应该在adapter中设置binding = null
发布于 2021-06-23 21:45:37
我认为这更多的是个人喜好。我喜欢用扩展函数和高阶函数
fun <T : ViewDataBinding> Fragment.getDataBinding(layout: Int, container: ViewGroup?): T {
val binding: T = DataBindingUtil.inflate(layoutInflater, layout, container, false)
binding.lifecycleOwner = viewLifecycleOwner
return binding
}我的片段看起来像这样。
class InviteFragment : Fragment() {
private lateinit var binding: FragmentInviteBinding
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = getDataBinding(R.layout.fragment_invite, container)
return binding.apply {
inviteAll.setOnClickListener(onInviteAllClick)
// You can set as many click listener here
// or some initialization related to view such as
// setting up recycler view adapter and decorators
}.root
}
private val onInviteAllClick = View.OnClickListener {
// Invite users
}
}通过这样做,您的onCreateView将更具可读性,并且永远不会变得很长。
https://stackoverflow.com/questions/68099146
复制相似问题