Created
February 5, 2017 12:04
-
-
Save milon87/6cd19295e38ce3612f3c7b130f521baf to your computer and use it in GitHub Desktop.
Easy recycleView item/full list 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 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; | |
} | |
} | |
} |
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 ListItemClickListener { | |
void clickPosition(int position, int id); | |
} |
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 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()); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This code is helpful for my project
Thanks a lot