Skip to content

Instantly share code, notes, and snippets.

@milon87
Created February 5, 2017 12:04
Show Gist options
  • Save milon87/6cd19295e38ce3612f3c7b130f521baf to your computer and use it in GitHub Desktop.
Save milon87/6cd19295e38ce3612f3c7b130f521baf to your computer and use it in GitHub Desktop.
Easy recycleView item/full list item click listener
public class FragmentHome extends Fragment implements ListItemClickListener {
public FragmentHome() {
//Required empty public constructor
}
@Bind(R.id.home_rv_offer)
RecyclerView recyclerView;
//private recyclerView;
private View rootView;
private RecyclerViewAdapter recyclerViewAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
rootView = inflater.inflate(R.layout.fragment_home, container, false);
ButterKnife.bind(this, rootView);
initializeViewsAdapter();
setList();
return rootView;
}
private void setList() {
Offer offer = new Offer();
List<Offer> offerList = new ArrayList<>();
for (int i = 0; i < 20; i++)
offerList.add(offer);
recyclerViewAdapter.setOfferList(offerList);
}
private void initializeViewsAdapter() {
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
recyclerViewAdapter = new RecyclerViewAdapter(getContext(), this);
recyclerView.setAdapter(recyclerViewAdapter);
}
@Override
public void clickPosition(int position, int id) {
switch (id) {
case R.id.card_view:
Toast.makeText(getContext(), position + " Full View ID" + id, Toast.LENGTH_SHORT).show();
break;
case R.id.offer_title:
Toast.makeText(getContext(), position + " Title Text ID" + id, Toast.LENGTH_SHORT).show();
break;
case R.id.offer_operator:
Toast.makeText(getContext(), position + " Image View ID" + id, Toast.LENGTH_SHORT).show();
break;
case R.id.offer_detail:
Toast.makeText(getContext(), position + " Detail View ID" + id, Toast.LENGTH_SHORT).show();
break;
case R.id.arrow:
Toast.makeText(getContext(), position + " Arrow View ID" + id, Toast.LENGTH_SHORT).show();
break;
}
}
}
public interface ListItemClickListener {
void clickPosition(int position, int id);
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.OfferViewHolder> {
private Context context;
private List<Offer> offerList;
private ListItemClickListener listItemClickListener;
public RecyclerViewAdapter(Context context, ListItemClickListener listItemClickListener) {
this.context = context;
this.listItemClickListener = listItemClickListener;
}
public void setOfferList(List<Offer> offerList) {
this.offerList = offerList;
notifyDataSetChanged();
}
@Override
public OfferViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_offer, parent, false);
OfferViewHolder viewHolder = new OfferViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(OfferViewHolder holder, final int position) {
Offer offer = offerList.get(position);
//set data
holder.offerTitle.setText(offer.getTitle() + position);
holder.offerDetail.setText(offer.getDetail() + position);
}
@Override
public int getItemCount() {
return offerList.size();
}
public class OfferViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@Bind(R.id.offer_title)
TextView offerTitle;
@Bind(R.id.offer_detail)
TextView offerDetail;
@Bind(R.id.offer_operator)
ImageView offerOperator;
@Bind(R.id.arrow)
ImageView arrow;
public OfferViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
//set click listener
itemView.setOnClickListener(this);
offerTitle.setOnClickListener(this);
arrow.setOnClickListener(this);
offerOperator.setOnClickListener(this);
offerDetail.setOnClickListener(this);
}
@Override
public void onClick(View view) {
listItemClickListener.clickPosition(getAdapterPosition(), view.getId());
}
}
}
@HighKick1115
Copy link

This code is helpful for my project
Thanks a lot

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