package com.fastaccess.ui.widgets.recyclerview;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import butterknife.ButterKnife;
/**
* Created by Kosh on 17 May 2016, 7:13 PM
*/
public abstract class BaseViewHolder<T> extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
public interface OnItemClickListener<T> {
void onItemClick(int position, View v, T item);
void onItemLongClick(int position, View v, T item);
}
@Nullable protected final BaseRecyclerAdapter adapter;
public static View getView(@NonNull ViewGroup parent, @LayoutRes int layoutRes) {
return LayoutInflater.from(parent.getContext()).inflate(layoutRes, parent, false);
}
public BaseViewHolder(@NonNull View itemView) {
this(itemView, null);
}
public BaseViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter) {
super(itemView);
ButterKnife.bind(this, itemView);
this.adapter = adapter;
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
}
@SuppressWarnings("unchecked") @Override public void onClick(View v) {
if (adapter != null && adapter.getListener() != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION && position < adapter.getItemCount())
adapter.getListener().onItemClick(position, v, adapter.getItem(position));
}
}
@SuppressWarnings("unchecked") @Override public boolean onLongClick(View v) {
if (adapter != null && adapter.getListener() != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION && position < adapter.getItemCount())
adapter.getListener().onItemLongClick(position, v, adapter.getItem(position));
}
return true;
}
public abstract void bind(@NonNull T t);
}