package support.ui.cells;
import android.content.Context;
import android.text.TextUtils;
import android.view.ViewGroup;
import com.anthony.rxlibrary.R;
import support.ui.adapters.BaseEasyViewHolderFactory;
import support.ui.adapters.EasyViewHolder;
public class CellsViewHolderFactory extends BaseEasyViewHolderFactory {
public CellsViewHolderFactory(Context context) {
super(context);
}
@Override
public EasyViewHolder create(int viewType, ViewGroup parent) {
CellViewHolder cellViewHolder = null;
switch (viewType) {
case CellModel.VIEW_TYPE_LOADING: {
cellViewHolder = new CellViewHolder(new LoadingCell(context));
break;
}
case CellModel.VIEW_TYPE_DIVIDER: {
cellViewHolder = new CellViewHolder(new DividerCell(context));
break;
}
case CellModel.VIEW_TYPE_EMPTY: {
cellViewHolder = new CellViewHolder(new EmptyCell(context)) {
@Override
public void bindTo(int position, CellModel model) {
if (model.cellHeight > 0) {
((EmptyCell)itemView).setHeight(model.cellHeight);
}
}
};
break;
}
case CellModel.VIEW_TYPE_HEADER: {
cellViewHolder = new CellViewHolder(new HeaderCell(context)) {
@Override
public void bindTo(int position, CellModel model) {
if (!TextUtils.isEmpty(model.text)) {
((HeaderCell)itemView).setText(model.text);
}
}
};
break;
}
case CellModel.VIEW_TYPE_SHADOW: {
cellViewHolder = new CellViewHolder(new ShadowSectionCell(context)) {
@Override
public void bindTo(int position, CellModel model) {
if (model.cellHeight > 0) {
((ShadowSectionCell)itemView).setSize(model.cellHeight);
}
}
};
break;
}
case CellModel.VIEW_TYPE_SHADOW_BOTTOM: {
cellViewHolder = new CellViewHolder(new ShadowBottomSectionCell(context));
break;
}
case CellModel.VIEW_TYPE_TEXT:{
cellViewHolder = new CellViewHolder(new TextCell(context)) {
@Override
public void bindTo(int position, CellModel model) {
TextCell textCell = (TextCell) itemView;
textCell.bindView(model);
}
};
break;
}
case CellModel.VIEW_TYPE_TEXT_INFO_PRIVACY:{
cellViewHolder = new CellViewHolder(new TextInfoPrivacyCell(context)) {
@Override
public void bindTo(int position, CellModel model) {
TextInfoPrivacyCell textCell = (TextInfoPrivacyCell) itemView;
textCell.setText(model.text);
if (model.isBottom) {
textCell.setBackgroundResource(R.drawable.greydivider_bottom);
} else {
textCell.setBackgroundResource(R.drawable.greydivider);
}
}
};
break;
}
case CellModel.VIEW_TYPE_SETTINGS:{
cellViewHolder = new CellViewHolder(new TextSettingsCell(context)) {
@Override
public void bindTo(int position, CellModel model) {
TextSettingsCell cell = (TextSettingsCell) itemView;
cell.bindView(model.text, model.drawable, model.value, model.needDivider);
}
};
break;
}
case CellModel.VIEW_TYPE_DETAIL_SETTINGS:{
cellViewHolder = new CellViewHolder(new TextDetailSettingsCell(context)) {
@Override
public void bindTo(int position, CellModel model) {
TextDetailSettingsCell cell = (TextDetailSettingsCell) itemView;
cell.setTextAndValue(model.text, model.detail, model.needDivider);
cell.setMultilineDetail(model.multiline);
}
};
break;
}
case CellModel.VIEW_TYPE_CHECK:{
cellViewHolder = new CellViewHolder(new TextCheckCell(context)) {
@Override
public void bindTo(int position, CellModel model) {
TextCheckCell cell = (TextCheckCell) itemView;
cell.bindView(model.text, model.detail, model.checked, model.needDivider);
}
};
break;
}
default:
return super.create(viewType, parent);
}
return cellViewHolder;
}
@Override
public int itemViewType(Object object) {
if (object instanceof CellModel) {
return ((CellModel)object).itemViewType;
}
return super.itemViewType(object);
}
}