Skip to content

Instantly share code, notes, and snippets.

@manojbhadane
Last active June 22, 2018 15:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manojbhadane/29b73d89bc3bfa28b6a6dbdd0c8e08ae to your computer and use it in GitHub Desktop.
Save manojbhadane/29b73d89bc3bfa28b6a6dbdd0c8e08ae to your computer and use it in GitHub Desktop.
public abstract class GenericAdapter<T, D> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private ArrayList<T> mArrayList;
public abstract int getLayoutResId();
public abstract void onBindData(T model, int position, D dataBinding);
public abstract void onItemClick(T model, int position);
public GenericAdapter(Context context, ArrayList<T> arrayList) {
this.mContext = context;
this.mArrayList = arrayList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewDataBinding dataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), getLayoutResId(), parent, false);
RecyclerView.ViewHolder holder = new ItemViewHolder(dataBinding);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
onBindData(mArrayList.get(position), position, ((ItemViewHolder) holder).mDataBinding);
((ViewDataBinding) ((ItemViewHolder) holder).mDataBinding).getRoot().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClick(mArrayList.get(position), position);
}
});
}
@Override
public int getItemCount() {
return mArrayList.size();
}
public void addItems(ArrayList<T> arrayList) {
mArrayList = arrayList;
this.notifyDataSetChanged();
}
public T getItem(int position) {
return mArrayList.get(position);
}
class ItemViewHolder extends RecyclerView.ViewHolder {
protected D mDataBinding;
public ItemViewHolder(ViewDataBinding binding) {
super(binding.getRoot());
mDataBinding = (D) binding;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment