I want to set an OnClickListener
to recycler view so that it can open another activity But each item should open a different activity
Currently, when an item is clicked it shows a toast message Please, tell me how to open different activities when items are clicked I have attached all the code ->
RecyclerAdapter.java
public class RecyclerViewAdapter extends
RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
Context nContext;
List<Contact> nData;
private ItemClickListener mClickListener;
public RecyclerViewAdapter(Context nContext, List<Contact> nData) {
this.nContext = nContext;
this.nData = nData;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v;
v = LayoutInflater.from(nContext).inflate(R.layout.item_contact,parent,false);
MyViewHolder vHolder = new MyViewHolder(v);
vHolder.item_contact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(nContext,BOOK.class); //All the items open same pdf...
// I want to open different pdfs after clickeig different items in recyclerview
nContext.startActivity(intent);
}
});
return vHolder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tv_name.setText(nData.get(position).getName());
holder.tv_phone.setText(nData.get(position).getPhone());
holder.img.setImageResource(nData.get(position).getPhoto());
}
@Override
public int getItemCount() {
return nData.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
private TextView tv_name;
private TextView tv_phone;
private ImageView img;
private LinearLayout item_contact;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
item_contact = (LinearLayout) itemView.findViewById(R.id.contact_item_id);
tv_name = (TextView) itemView.findViewById(R.id.name_contact);
tv_phone = (TextView) itemView.findViewById(R.id.phone_contact);
img= (ImageView) itemView.findViewById(R.id.img_contact);
}
}
}
Fragment.java ->
public class FragmentContact extends Fragment {
View v;
private RecyclerView myrecyclerview;
private DatabaseReference mDatabase;
MyAdapter2 myadapter;
private List<Contact> lstContact;
public FragmentContact() {
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v = inflater.inflate(R.layout.contact_fragment, container, false);
myrecyclerview = (RecyclerView) v.findViewById(R.id.contact_recyclerview);
RecyclerViewAdapter recyclerAdapter = new RecyclerViewAdapter(getContext(), lstContact);
myrecyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
myrecyclerview.setAdapter(recyclerAdapter);
return v;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lstContact = new ArrayList<>();
lstContact.add(new Contact("Aron Jones", "(111) 251236211", R.drawable.team));
lstContact.add(new Contact("Amy 1", "(216) 2221254", R.drawable.team));
lstContact.add(new Contact("Amy 2", "(216) 2221254", R.drawable.team));
lstContact.add(new Contact("Amy 3", "(216) 2221254", R.drawable.team));
lstContact.add(new Contact("Amy 4", "(216) 2221254", R.drawable.team));
lstContact.add(new Contact("Amy 5", "(216) 2221254", R.drawable.team));
lstContact.add(new Contact("Aron Jones", "(111) 251236211", R.drawable.team));
//lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));
//lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));
//lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));
//lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));
// lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));
}
}
Please, tell me how to open different activities when items are clicked
Please set your listener in onBindViewHolder & in it based on position or model of that position you can set activity
First remove the clicklistener
from onCreateViewHolder
Lets say you have 7 items
in the list, do this in onBindViewHolder
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tv_name.setText(nData.get(position).getName());
holder.tv_phone.setText(nData.get(position).getPhone());
holder.img.setImageResource(nData.get(position).getPhoto());
//handle item click here
holder.item_contact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(position == 0){
//first item clicked
Intent intent = new Intent(nContext,BOOK.class);
nContext.startActivity(intent);
}else if(position == 1){
//second item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);
nContext.startActivity(intent);
}else if(position == 2){
//third item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);
nContext.startActivity(intent);
}else if(position == 3){
//fourth item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);
nContext.startActivity(intent);
}else if(position == 4){
//fifth item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);
nContext.startActivity(intent);
}else if(position == 5){
//sixth item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);
nContext.startActivity(intent);
}else if(position == 6){
//seventh item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);
nContext.startActivity(intent);
}
}
});
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.