Skip to content

Library created to enable easy to use, reflection free, lazy initialisation with auto destruction on lifecycle of data and view binders.

License

Notifications You must be signed in to change notification settings

GrzegorzBobryk/ViewBindingDelegate

Repository files navigation

ViewBindingDelegate

What is it?

Library created to enable easy to use, reflection free, lazy initialisation with auto destruction on lifecycle of data and view binders. You probably seen already similar approaches in some tutorials. I can not find ready to use lib like that.

Setup

Add it in root build.gradle

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

and the dependency itself

	dependencies {
	        implementation 'com.github.GrzegorzBobryk:ViewBindingDelegate:1.0.9'
	}

Warning

Remember to not call binder object from onDestroyView() event because it will cause recreation and memory leak.

Examples

You can find them in sample module. Here you have quick usage:

class ExampleFragment : Fragment(R.layout.fragment_example) {
    //simple binding
    private val binding by viewBinding(FragmentExampleBinding::bind)

    //binding with setting up DataBinding variables
    private val binding by viewBinding {
        FragmentExampleBinding.bind(it).also { binding ->
            binding.text = getString(R.string.example)
        }
    }
}

You can also use safeSetAdapter to automatically clean adapter reference from fragment. Do not call it from pagers.

class ExampleFragment1 : Fragment(R.layout.fragment_example) {
    private val binding by viewBinding(FragmentExampleBinding::bind)
    private val adapter by lazy { ExampleAdapter(::handleExampleClick) }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        //calling extension function
        binding.list.safeSetAdapter(adapter)
        adapter.submitList(list)
    }
}

About

Library created to enable easy to use, reflection free, lazy initialisation with auto destruction on lifecycle of data and view binders.

Topics

Resources

License

Stars

Watchers

Forks

Languages