Skip to content

Instantly share code, notes, and snippets.

@bperin
Last active August 31, 2016 19:39
Show Gist options
  • Save bperin/43aa95bcb788ca3fc2a0 to your computer and use it in GitHub Desktop.
Save bperin/43aa95bcb788ca3fc2a0 to your computer and use it in GitHub Desktop.
Generic Recycler Adapter with click listeners
@EBean
public class FeedRecyclerAdapter extends RecyclerView.Adapter<MyViewHolder> {
@RootContext
Context context;
private ArrayList<Snap> items = new ArrayList<Snap>();
private RecyclerItemClicked onRecyclerItemClicked;
@Override
public int getItemCount() {
return items.size();
}
public void setOnRecyclerItemClickedListener(RecyclerItemClicked listener){
this.onRecyclerItemClicked = listener;
}
@Override
public void onBindViewHolder(MyViewHolder viewHolder, final int position) {
final Snap snap = items.get(position);
FeedView feedView = (FeedView) viewHolder.getView();
feedView.bind(snap);
feedView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(onRecyclerItemClicked != null){
onRecyclerItemClicked.onRecyclerItemClicked(position);
}
}
});
feedView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if(onRecyclerItemClicked != null){
onRecyclerItemClicked.onRecyclerLongClicked(position);
}
return false;
}
});
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
FeedView v = FeedView_.build(context);
return new MyViewHolder(v);
}
@UiThread(propagation = Propagation.REUSE)
public void addItem(int position,Snap snap) {
items.add(position, snap);
notifyItemInserted(position);
}
@UiThread(propagation = Propagation.REUSE)
public void removeItem(int position) {
items.remove(position);
notifyItemRemoved(position);
}
@UiThread(propagation = Propagation.REUSE)
public void addAll(ArrayList<Snap> items) {
int startIndex = this.items.size();
this.items.addAll(startIndex, items);
notifyItemRangeInserted(startIndex, items.size());
}
@UiThread(propagation = Propagation.REUSE)
public void clear() {
int size = items.size();
items.clear();
notifyItemRangeRemoved(0, size);
}
}
@asbadve
Copy link

asbadve commented Aug 13, 2015

How can i use this adapter and call the onClick/onLongClick listener from activity.Can u help me?

Copy link

ghost commented Aug 31, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment