// Path: sample-app/src/main/java/ca/antonious/sample/models/SampleModel.java
// public class SampleModel {
//     private String name;
// 
//     public SampleModel(String name) {
//         this.name = name;
//     }
// 
//     public String getName() {
//         return name;
//     }
// }
// 
// Path: viewcelladapter/src/main/java/ca/antonious/viewcelladapter/viewcells/GenericViewCell.java
// public abstract class GenericViewCell<TViewHolder extends RecyclerView.ViewHolder, TData> extends AbstractViewCell<TViewHolder> {
//     private TData data;
// 
//     public GenericViewCell(TData data) {
//         setData(data);
//     }
// 
//     public TData getData() {
//         return data;
//     }
// 
//     public void setData(TData data) {
//         this.data = data;
//     }
// 
//     @Override
//     public int getItemId() {
//         return data.hashCode();
//     }
// 
//     @Override
//     public String toString() {
//         return getData().toString();
//     }
// }


import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import ca.antonious.sample.R;
import ca.antonious.sample.models.SampleModel;
import ca.antonious.viewcelladapter.annotations.BindListener;
import ca.antonious.viewcelladapter.viewcells.GenericViewCell;
    public int getTotalPerLine() {
        return 3;
    }

    public interface OnSampleModelClickListener {
        void onSampleModelClick(SampleModel sampleModel);
    }

    @BindListener
    public void bindOnSampleModelClick(SampleModelViewHolder viewHolder, final OnSampleModelClickListener listener) {
        viewHolder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onSampleModelClick(getData());
            }
        });
    }

    public static class SampleModelViewHolder extends RecyclerView.ViewHolder {
        private TextView nameTextView;

        public SampleModelViewHolder(View itemView) {
            super(itemView);
            nameTextView = (TextView) itemView.findViewById(R.id.sample_model_name);
        }

        public void setName(String name) {
            nameTextView.setText(name);
        }

// Path: sample-app/src/main/java/ca/antonious/sample/models/SampleModel.java
// public class SampleModel {
//     private String name;
// 
//     public SampleModel(String name) {
//         this.name = name;
//     }
// 
//     public String getName() {
//         return name;
//     }
// }
// 
// Path: viewcelladapter/src/main/java/ca/antonious/viewcelladapter/viewcells/GenericViewCell.java
// public abstract class GenericViewCell<TViewHolder extends RecyclerView.ViewHolder, TData> extends AbstractViewCell<TViewHolder> {
//     private TData data;
// 
//     public GenericViewCell(TData data) {
//         setData(data);
//     }
// 
//     public TData getData() {
//         return data;
//     }
// 
//     public void setData(TData data) {
//         this.data = data;
//     }
// 
//     @Override
//     public int getItemId() {
//         return data.hashCode();
//     }
// 
//     @Override
//     public String toString() {
//         return getData().toString();
//     }
// }


// Path: sample-app/src/main/java/ca/antonious/sample/viewcells/SampleModelViewCell.java
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import ca.antonious.sample.R;
import ca.antonious.sample.models.SampleModel;
import ca.antonious.viewcelladapter.annotations.BindListener;
import ca.antonious.viewcelladapter.viewcells.GenericViewCell;

    public int getTotalPerLine() {
        return 3;
    }

    public interface OnSampleModelClickListener {
        void onSampleModelClick(SampleModel sampleModel);
    }

    @BindListener
    public void bindOnSampleModelClick(SampleModelViewHolder viewHolder, final OnSampleModelClickListener listener) {
        viewHolder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onSampleModelClick(getData());
            }
        });
    }

    public static class SampleModelViewHolder extends RecyclerView.ViewHolder {
        private TextView nameTextView;

        public SampleModelViewHolder(View itemView) {
            super(itemView);
            nameTextView = (TextView) itemView.findViewById(R.id.sample_model_name);
        }

        public void setName(String name) {
            nameTextView.setText(name);
        }

        public void setOnClickListener(View.OnClickListener onClickListener) {