package com.mikepenz.fastadapter.app.items;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import com.mikepenz.fastadapter.IExpandable;
import com.mikepenz.fastadapter.IItem;
import com.mikepenz.fastadapter.ISubItem;
import com.mikepenz.fastadapter.app.R;
import com.mikepenz.fastadapter.items.AbstractItem;
import com.mikepenz.iconics.typeface.IIcon;
import com.mikepenz.iconics.view.IconicsImageView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by mikepenz on 28.12.15.
*/
public class IconItem<T extends IItem & IExpandable> extends AbstractItem<IconItem<T>, IconItem.ViewHolder> implements ISubItem<IconItem, T> {
public IIcon mIcon;
private T mParent;
/**
* setter method for the Icon
*
* @param icon the icon
* @return this
*/
public IconItem withIcon(IIcon icon) {
this.mIcon = icon;
return this;
}
@Override
public T getParent() {
return mParent;
}
@Override
public IconItem withParent(T parent) {
mParent = parent;
return this;
}
/**
* defines the type defining this item. must be unique. preferably an id
*
* @return the type
*/
@Override
public int getType() {
return R.id.fastadapter_icon_item_id;
}
/**
* defines the layout which will be used for this item in the list
*
* @return the layout for this item
*/
@Override
public int getLayoutRes() {
return R.layout.icon_item;
}
/**
* binds the data of this item onto the viewHolder
*
* @param viewHolder the viewHolder of this item
*/
@Override
public void bindView(ViewHolder viewHolder, List<Object> payloads) {
super.bindView(viewHolder, payloads);
//define our data for the view
viewHolder.image.setIcon(mIcon);
viewHolder.name.setText(mIcon.getName());
}
@Override
public void unbindView(ViewHolder holder) {
super.unbindView(holder);
holder.image.setImageDrawable(null);
}
@Override
public ViewHolder getViewHolder(View v) {
return new ViewHolder(v);
}
/**
* our ViewHolder
*/
protected static class ViewHolder extends RecyclerView.ViewHolder {
protected View view;
@BindView(R.id.name)
public TextView name;
@BindView(R.id.icon)
public IconicsImageView image;
public ViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
this.view = view;
}
}
}