Last active
August 31, 2016 19:39
-
-
Save bperin/43aa95bcb788ca3fc2a0 to your computer and use it in GitHub Desktop.
Generic Recycler Adapter with click listeners
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
How can i use this adapter and call the onClick/onLongClick listener from activity.Can u help me?