I want a fragment to open when I click on the { Buy Now button } of each item in my app This is my item Button but I can’t. When I write a Button onclick listener in my adapter’s onBindViewholder,
And when I call the fragment transaction in onBindViewHolder, I can’t get it.
Below is my adapter class :
public static class DataAdapter extends RecyclerView.Adapter<DataAdapter.DataViewHolder>{
Context context;
ArrayList<DataViewModel>modelArrayList;
public DataAdapter(Context context, ArrayList<DataViewModel> modelArrayList) {
this.context = context;
this.modelArrayList = modelArrayList;
}
@NonNull
@Override
public DataViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new DataViewHolder(LayoutInflater.from(context).inflate(R.layout.view_item,parent,false));
}
@Override
public void onBindViewHolder(@NonNull DataViewHolder holder, int position) {
DataViewModel model =modelArrayList.get(position);
holder.tvTittle.setText(model.getTittle());
holder.tvPrice.setText(model.getPrice());
Glide.with(context).load(model.getProfile()).into(holder.tvImage);
holder.btnBuy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
@Override
public int getItemCount() {
return modelArrayList.size();
}
//...........View Holder...........
public static class DataViewHolder extends RecyclerView.ViewHolder{
TextView tvTittle,tvPrice;
ImageView tvImage;
AppCompatButton btnBuy;
public DataViewHolder(@NonNull View itemView) {
super(itemView);
tvTittle=itemView.findViewById(R.id.tvTittle);
tvPrice=itemView.findViewById(R.id.tvPrice);
tvImage=itemView.findViewById(R.id.tvImage);
btnBuy=itemView.findViewById(R.id.btnBuy);
}
}
}
Note :- My main point is that I want to open a fragment instead of an activity when the { btnBuy } is clicked.
I solved this using Activity and Intent , but I want the fragment to open here, click on the { Buy Now button } [This is the button of each item
How can I solve this?