// Path: viewcelladapter/src/main/java/ca/antonious/viewcelladapter/viewcells/AbstractViewCell.java
// public abstract class AbstractViewCell<TViewHolder extends RecyclerView.ViewHolder> implements Selectable {
//     private boolean isSelected;
// 
//     public AbstractViewCell() {
//         this.isSelected = false;
//     }
// 
//     public abstract int getItemId();
//     public abstract void bindViewCell(TViewHolder viewHolder);
// 
//     @Override
//     public boolean isSelected() {
//         return isSelected;
//     }
// 
//     @Override
//     public void select() {
//         isSelected = true;
//     }
// 
//     @Override
//     public void deselect() {
//         isSelected = false;
//     }
// 
//     public int getLayoutId() {
//         return -1;
//     }
// 
//     public int getViewType() {
//         return getClass().getCanonicalName().hashCode();
//     }
// 
//     public int getTotalPerLine() {
//         return 1;
//     }
// 
//     public void unbindViewCell(TViewHolder viewHolder) {
// 
//     }
// 
//     public View createView(ViewGroup parent) {
//         return inflate(parent, getLayoutId());
//     }
// 
//     public TViewHolder createViewHolder(View view) {
//         try {
//             Constructor<? extends TViewHolder> viewHolderConstructor = getViewHolderClass().getConstructor(View.class);
//             return viewHolderConstructor.newInstance(view);
//         } catch (Exception e) {
//             return null;
//         }
//     }
// 
//     public TViewHolder createViewHolder(ViewGroup parent) {
//         return createViewHolder(createView(parent));
//     }
// 
//     public View inflate(ViewGroup parent, @LayoutRes int layoutId) {
//         return LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false);
//     }
// 
//     @SuppressWarnings("unchecked")
//     public Class<? extends TViewHolder> getViewHolderClass() {
//         return (Class<? extends TViewHolder>) ((ParameterizedType) getClass()
//                 .getGenericSuperclass()).getActualTypeArguments()[0];
//     }
// 
//     @Override
//     public boolean equals(Object otherViewCell) {
//         if (this == otherViewCell) return true;
//         if (otherViewCell == null || getClass() != otherViewCell.getClass()) return false;
// 
//         AbstractViewCell<?> viewCell = (AbstractViewCell<?>) otherViewCell;
// 
//         return getItemId() == viewCell.getItemId();
// 
//     }
// 
//     @Override
//     public int hashCode() {
//         return getItemId();
//     }
// }
// 
// Path: viewcelladapter/src/main/java/ca/antonious/viewcelladapter/viewcells/BaseViewHolder.java
// public class BaseViewHolder extends RecyclerView.ViewHolder {
//     public BaseViewHolder(View itemView) {
//         super(itemView);
//     }
// }


import android.support.annotation.LayoutRes;
import android.view.View;
import java.util.Random;
import ca.antonious.viewcelladapter.viewcells.AbstractViewCell;
import ca.antonious.viewcelladapter.viewcells.BaseViewHolder;
package ca.antonious.viewcelladapter.viewcells.builtins;




/**
 * Created by George on 2017-01-01.
 */

public class StaticViewCell extends AbstractViewCell<BaseViewHolder> {
    private int layoutId;
    private int itemId;

    public StaticViewCell(@LayoutRes int layoutId) {
        this(layoutId, new Random(System.nanoTime()).nextInt());
    }

    public StaticViewCell(@LayoutRes int layoutId, int itemId) {
        this.layoutId = layoutId;
// Path: viewcelladapter/src/main/java/ca/antonious/viewcelladapter/viewcells/AbstractViewCell.java
// public abstract class AbstractViewCell<TViewHolder extends RecyclerView.ViewHolder> implements Selectable {
//     private boolean isSelected;
// 
//     public AbstractViewCell() {
//         this.isSelected = false;
//     }
// 
//     public abstract int getItemId();
//     public abstract void bindViewCell(TViewHolder viewHolder);
// 
//     @Override
//     public boolean isSelected() {
//         return isSelected;
//     }
// 
//     @Override
//     public void select() {
//         isSelected = true;
//     }
// 
//     @Override
//     public void deselect() {
//         isSelected = false;
//     }
// 
//     public int getLayoutId() {
//         return -1;
//     }
// 
//     public int getViewType() {
//         return getClass().getCanonicalName().hashCode();
//     }
// 
//     public int getTotalPerLine() {
//         return 1;
//     }
// 
//     public void unbindViewCell(TViewHolder viewHolder) {
// 
//     }
// 
//     public View createView(ViewGroup parent) {
//         return inflate(parent, getLayoutId());
//     }
// 
//     public TViewHolder createViewHolder(View view) {
//         try {
//             Constructor<? extends TViewHolder> viewHolderConstructor = getViewHolderClass().getConstructor(View.class);
//             return viewHolderConstructor.newInstance(view);
//         } catch (Exception e) {
//             return null;
//         }
//     }
// 
//     public TViewHolder createViewHolder(ViewGroup parent) {
//         return createViewHolder(createView(parent));
//     }
// 
//     public View inflate(ViewGroup parent, @LayoutRes int layoutId) {
//         return LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false);
//     }
// 
//     @SuppressWarnings("unchecked")
//     public Class<? extends TViewHolder> getViewHolderClass() {
//         return (Class<? extends TViewHolder>) ((ParameterizedType) getClass()
//                 .getGenericSuperclass()).getActualTypeArguments()[0];
//     }
// 
//     @Override
//     public boolean equals(Object otherViewCell) {
//         if (this == otherViewCell) return true;
//         if (otherViewCell == null || getClass() != otherViewCell.getClass()) return false;
// 
//         AbstractViewCell<?> viewCell = (AbstractViewCell<?>) otherViewCell;
// 
//         return getItemId() == viewCell.getItemId();
// 
//     }
// 
//     @Override
//     public int hashCode() {
//         return getItemId();
//     }
// }
// 
// Path: viewcelladapter/src/main/java/ca/antonious/viewcelladapter/viewcells/BaseViewHolder.java
// public class BaseViewHolder extends RecyclerView.ViewHolder {
//     public BaseViewHolder(View itemView) {
//         super(itemView);
//     }
// }


// Path: viewcelladapter/src/main/java/ca/antonious/viewcelladapter/viewcells/builtins/StaticViewCell.java
import android.support.annotation.LayoutRes;
import android.view.View;
import java.util.Random;
import ca.antonious.viewcelladapter.viewcells.AbstractViewCell;
import ca.antonious.viewcelladapter.viewcells.BaseViewHolder;

package ca.antonious.viewcelladapter.viewcells.builtins;




/**
 * Created by George on 2017-01-01.
 */

public class StaticViewCell extends AbstractViewCell<BaseViewHolder> {
    private int layoutId;
    private int itemId;

    public StaticViewCell(@LayoutRes int layoutId) {
        this(layoutId, new Random(System.nanoTime()).nextInt());
    }

    public StaticViewCell(@LayoutRes int layoutId, int itemId) {
        this.layoutId = layoutId;
        this.itemId = itemId;