Created
December 1, 2017 22:53
-
-
Save arvkmr/1396b838fb1d391243e3cc68288503ed to your computer and use it in GitHub Desktop.
Recycler view with item click listener
This file contains 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
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