Skip to content

Instantly share code, notes, and snippets.

@alexfacciorusso
Created August 11, 2015 14:04
Show Gist options
  • Select an option

  • Save alexfacciorusso/8ce8370c95f9743cb12f to your computer and use it in GitHub Desktop.

Select an option

Save alexfacciorusso/8ce8370c95f9743cb12f to your computer and use it in GitHub Desktop.

Revisions

  1. alexfacciorusso created this gist Aug 11, 2015.
    34 changes: 34 additions & 0 deletions BindingCompatActivity.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    import android.databinding.DataBindingUtil;
    import android.databinding.ViewDataBinding;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.view.ViewGroup;

    /**
    * @author alexfacciorusso
    * @since 11/08/15.
    */
    public class BindingCompatActivity<BT extends ViewDataBinding> extends AppCompatActivity {
    private BT mBinding;

    @Override
    public void setContentView(int layoutResID) {
    mBinding = DataBindingUtil.setContentView(this, layoutResID);
    }

    @Override
    public void setContentView(View view) {
    super.setContentView(view);
    mBinding = DataBindingUtil.getBinding(view);
    }

    @Override
    public void setContentView(View view, ViewGroup.LayoutParams params) {
    super.setContentView(view, params);
    mBinding = DataBindingUtil.getBinding(view);
    }

    public BT getBinding() {
    return mBinding;
    }
    }
    25 changes: 25 additions & 0 deletions BindingHolder.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    import android.databinding.DataBindingUtil;
    import android.databinding.ViewDataBinding;
    import android.support.annotation.LayoutRes;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.ViewGroup;

    public class BindingHolder<BT extends ViewDataBinding> extends RecyclerView.ViewHolder {
    private BT mBinding;

    public BindingHolder(BT binding) {
    super(binding.getRoot());
    mBinding = binding;
    }

    public static <BT extends ViewDataBinding> BindingHolder<BT> newInstanceFrom(ViewGroup parent, @LayoutRes int layout) {
    return new BindingHolder<>(
    (BT) DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),
    layout, parent, false));
    }

    public BT getBinding() {
    return mBinding;
    }
    }