package com.lyft.scoop; import android.view.View; import android.view.ViewGroup; public class ViewControllerInflater { protected ViewController createViewController(Scoop scoop, Class<? extends ViewController> clazz) { try { return clazz.newInstance(); } catch (Throwable e) { throw new RuntimeException("View controller " + clazz.getSimpleName() + " don't have default constructor"); } } public ViewController inflateViewController( Scoop scoop, Class<? extends ViewController> viewControllerClazz, ViewGroup viewGroup) { ViewController viewController = createViewController(scoop, viewControllerClazz); viewController.setScoop(scoop); return viewController; } static void bindViewControllerToView(final View view, final ViewController viewController) { final View.OnAttachStateChangeListener viewAttachListener = new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { viewController.attach(view); } @Override public void onViewDetachedFromWindow(View v) { viewController.detach(view); } }; view.addOnAttachStateChangeListener(viewAttachListener); } }