I'm using Recyclerview
for my datalist in CardView
, but I don't know how to make onClick in my data list. Can someone help me to solve this?
My code is:
HomeFragment.Java
public class HomeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_grid_layout, container, false);
dataList = view.findViewById(R.id.dataList);
titles = new ArrayList<>();
images = new ArrayList<>();
titles.add("Berita");
titles.add("Customer Care");
titles.add("Cabang Clipan");
titles.add("Info Layanan");
titles.add("Info Pembayaran");
titles.add("Promo");
titles.add("Syarat Kedit");
titles.add("Simulasi Kredit");
images.add(R.drawable.ic_article);
images.add(R.drawable.ic_cs);
images.add(R.drawable.ic_cbng_clipan);
images.add(R.drawable.ic_simulation);
adapter = new Adapter(getActivity(), titles, images);
GridLayoutManager gridLayoutManager = new
GridLayoutManager(getActivity(), 4, GridLayoutManager.VERTICAL, false);
dataList.setLayoutManager(gridLayoutManager);
dataList.setHasFixedSize(true);
dataList.setAdapter(adapter);
return view;
}
}
I'm using Adapter
for Recyclerview
:
Adapter.Java
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
List<String> titles;
List<Integer> images;
Context ctx;
LayoutInflater inflater;
public Adapter(Context ctx, List<String> titles,List<Integer> images){
this.titles = titles;
this.images = images;
this.inflater = LayoutInflater.from(ctx);
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.fragment_home,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.title.setText(titles.get(position));
holder.gridIcon.setImageResource(images.get(position));
}
@Override
public int getItemCount() {
return titles.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView title;
ImageView gridIcon;
public ViewHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(R.id.text_1);
gridIcon = itemView.findViewById(R.id.image_1);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(),"Click on " + getAdapterPosition(),Toast.LENGTH_LONG).show();
Intent i = new Intent(v.getContext(),SimulationActivity.class);
i.setFlags(i.FLAG_ACTIVITY_NEW_TASK);
v.getContext().startActivity(i);
}
});
}
}
}
I have edited my adapter for onClickListener
Please help me to solve this.
You can add the
OnClickListener
to the root item of theReyclerView
row which isitemView
in your example.You can do that optionally in the
ViewHolder
constructor or inonBindViewHolder
methodHere it's in the
ViewHolder
And in the
onBindViewHolder