How to use data-binding with Fragment

后端 未结 14 1033
不思量自难忘°
不思量自难忘° 2020-11-29 16:48

I\'m trying to follow data-binding example from official google doc https://developer.android.com/tools/data-binding/guide.html

except that I\'m trying to apply data

14条回答
  •  -上瘾入骨i
    2020-11-29 17:26

    Very helpful blog about Databinding : https://link.medium.com/HQY2VizKO1

    class FragmentBinding(
        @LayoutRes private val resId: Int
    ) : ReadOnlyProperty {
    
        private var binding: T? = null
    
        override operator fun getValue(
            thisRef: Fragment,
            property: KProperty<*>
        ): T = binding ?: createBinding(thisRef).also { binding = it }
    
        private fun createBinding(
            activity: Fragment
        ): T = DataBindingUtil.inflate(LayoutInflater.from(activity.context),resId,null,true)
    }
    

    Declare binding val like this in Fragment :

    private val binding by FragmentBinding(R.layout.fragment_login)
    

    Don't forget to write this in fragment

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return binding.root
    }
    

提交回复
热议问题