/**
* Date: 15.11.2016
* Time: 9:41
*
* @author Savin Mikhail
*/
public abstract class MvpViewHolder extends RecyclerView.ViewHolder {
private MvpDelegate mMvpDelegate;
private final MvpDelegate mParentDelegate;
public MvpViewHolder(MvpDelegate<?> parentDelegate, final View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
mParentDelegate = parentDelegate;
}
@Nullable
protected MvpDelegate getMvpDelegate() {
if (getMvpChildId() == null) {
return null;
}
if (mMvpDelegate == null) {
mMvpDelegate = new MvpDelegate<>(this);
mMvpDelegate.setParentDelegate(mParentDelegate, getMvpChildId());
}
return mMvpDelegate;
}
protected void destroyMvpDelegate() {
if (getMvpDelegate() != null) {
getMvpDelegate().onSaveInstanceState();
getMvpDelegate().onDetach();
mMvpDelegate = null;
}
}
protected void createMvpDelegate() {
if (getMvpDelegate() != null) {
getMvpDelegate().onCreate();
getMvpDelegate().onAttach();
}
}
protected abstract String getMvpChildId();
}