Skip to content

androidbroadcast/ViewBindingPropertyDelegate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f48c7a1 · Oct 1, 2020

History

76 Commits
Sep 18, 2020
Jun 21, 2020
Oct 1, 2020
May 2, 2020
Sep 17, 2020
Jul 21, 2020
Sep 18, 2020
Oct 1, 2020
Jul 21, 2020
May 9, 2020
May 9, 2020
Sep 13, 2020
Sep 18, 2020

Repository files navigation

ViewBindingPropertyDelegate

Make work with Android View Binding simpler

IMPORTANT: Enable ViewBinding before use the library

Every Gradle module of your project need to enable ViewBinding. How to do that you can find in the official guide

Add library to a project

allprojects {
  repositories {
    jcenter()

    // or for the ASAP availability
    maven { url = 'https://dl.bintray.com/kirich1409/maven' }
  }
}

dependencies {
    implementation 'com.kirich1409.viewbindingpropertydelegate:viewbindingpropertydelegate:1.2.1'
    
    // To use only without reflection variants of viewBinding
    implementation 'com.kirich1409.viewbindingpropertydelegate:vbpd-noreflection:1.2.1'
}

Samples

class ProfileFragment : Fragment(R.layout.profile) {

    // Using reflection API under the hood
    private val viewBinding: ProfileBinding by viewBinding()

    // Without reflection
    private val viewBinding by viewBinding(ProfileBinding::bind)
}
class ProfileActivity : AppCompatActivity(R.layout.profile) {

    // Using reflection API under the hood
    private val viewBinding: ProfileBinding by viewBinding(R.id.container)

    // Without reflection
    private val viewBinding by viewBinding(ProfileBinding::bind, R.id.container)
}

It's very important that for some cases in DialogFragment you need to use dialogViewBinding instead of viewBinding

class ProfileDialogFragment : DialogFragment() {

    // Using reflection API under the hood
    private val viewBinding: ProfileBinding by dialogViewBinding(R.id.container)

    // Without reflection
    private val viewBinding by dialogViewBinding(ProfileBinding::bind, R.id.container)

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return AlertDialog.Builder(requireContext())
            .setView(R.layout.profile)
            .create()
    }
}
class ProfileDialogFragment : DialogFragment() {

    // Using reflection API under the hood
    private val viewBinding: ProfileBinding by viewBinding()

    // Without reflection
    private val viewBinding by viewBinding(ProfileBinding::bind)

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.profile, container, false)
    }
}