Skip to content

Instantly share code, notes, and snippets.

@arvkmr
Created December 1, 2017 22:53
Show Gist options
  • Save arvkmr/1396b838fb1d391243e3cc68288503ed to your computer and use it in GitHub Desktop.
Save arvkmr/1396b838fb1d391243e3cc68288503ed to your computer and use it in GitHub Desktop.
Recycler view with item click listener
public interface OnItemViewClickListener {
void onItemClick(View view, int position, AudioFile file);
}
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private List<Item> list;
private OnItemViewClickListener mItemClickListener;
public RecyclerAdapter(List<AudioFile> itemsData) {
this.list = itemsData;
}
// Create new views (invoked by the layout manager)
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new views
View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.demand_list_item, parent, false);
// create ViewHolder
return new ViewHolder(itemLayoutView);
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.songTv.setText(list.get(position).getTrack().getTitle());
viewHolder.artistTv.setText(list.get(position).getArtist().getName());
}
// inner class to hold a reference to each item of RecyclerView
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
@BindView(R.id.ondemand_title)
TextView songTv;
@BindView(R.id.ondemand_artist)
TextView artistTv;
@BindView(R.id.ondemand_like)
ImageButton likeButton;
@BindView(R.id.ondemand_dislike)
ImageButton disLikeButton;
public ViewHolder(View view){
super(view);
ButterKnife.bind(this,view);
likeButton.setOnClickListener(this);
disLikeButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
mItemClickListener.onItemClick(v, getAdapterPosition(), list.get(getAdapterPosition())); //OnItemViewClickListener mItemClickListener;
}
}
public void SetOnItemClickListener(final OnItemViewClickListener mItemClickListener) {
this.mItemClickListener = mItemClickListener;
}
// Return the size of your itemsData (invoked by the layout manager)
@Override
public int getItemCount() {
return list.size();
}
}
/////////////////////////////////////////////////////////////
mAdapter.SetOnItemClickListener(new OnItemViewClickListener() {
@Override
public void onItemClick(View view, int position, AudioFile file) {
switch (view.getId())
{
case R.id.ondemand_dislike:
dislike(file);
break;
case R.id.ondemand_like:
like(file);
break;
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment