There is an adapter that I use for several recyclerView in different fragments.
In each of the lists, I click on the elements, by clicking on which, it transfers me to activations.
final Context context = ((View)personViewHolder.personPhoto.getParent()).getContext(); ((View)personViewHolder.personPhoto.getParent()).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent; switch (position) { case 0: intent = new Intent(context, MainActivity.class); break; case 1: intent = new Intent(context, SecondActivity.class); break; default: intent = new Intent(context, ThirdActivity.class); break; } context.startActivity(intent); } }); All is good, but because I use this adapter for several fragments, this option is not very suitable for me, because always clicking on the 1st item in the list takes me to the MainActivity for all fragments.
Once again, the problem : I can not for each list in different fragments implement the transition to specific activities / fragments.
Additionally, I found an option , but I donβt know how to cut it, and in general that it fits, maybe someone will suggest an idea, since with adapters Iβm still on βYouβ.
Full adapter code:
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> { public static class PersonViewHolder extends RecyclerView.ViewHolder { TextView personName; TextView personAge; ImageView personPhoto; PersonViewHolder(View itemView) { super(itemView); personName = (TextView)itemView.findViewById(R.id.person_name); personAge = (TextView)itemView.findViewById(R.id.person_age); personPhoto = (ImageView)itemView.findViewById(R.id.person_photo); } } List<Person> persons; public RVAdapter(List<Person> persons){ this.persons = persons; } @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } @Override public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item, viewGroup, false); PersonViewHolder pvh = new PersonViewHolder(v); return pvh; } @Override public void onBindViewHolder(PersonViewHolder personViewHolder, final int position) { personViewHolder.personName.setText(persons.get(position).name); personViewHolder.personAge.setText(persons.get(position).description); personViewHolder.personPhoto.setImageResource(persons.get(position).photoId); final Context context = ((View)personViewHolder.personPhoto.getParent()).getContext(); ((View)personViewHolder.personPhoto.getParent()).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent; switch (position) { case 0: intent = new Intent(context, MainActivity.class); break; case 1: intent = new Intent(context, TestActivity.class); break; default: intent = new Intent(context, TestActivity.class); break; } context.startActivity(intent); } }); } @Override public int getItemCount() { return persons.size(); } The code of one of my fragments (they only differ in the method initializeAdapter )
public class SecondFragment extends Fragment { List<Person> persons; RecyclerView recyclerView; RecyclerView.LayoutManager layoutManager; public SecondFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_main, container, false); recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); layoutManager = new LinearLayoutManager(getContext()); recyclerView.setLayoutManager(layoutManager); recyclerView.setHasFixedSize(true); initializeData(); initializeAdapter(); return view; } private void initializeData() { persons = new ArrayList<>(); persons.add(new Person("test", "test", R.drawable.profile)); persons.add(new Person("test", "test", R.drawable.profile)); persons.add(new Person("test", "test", R.drawable.profile)); persons.add(new Person("test", "test", R.drawable.profile)); persons.add(new Person("test", "test", R.drawable.profile)); persons.add(new Person("test", "test", R.drawable.profile)); } private void initializeAdapter() { RVAdapter adapter = new RVAdapter(persons); recyclerView.setAdapter(adapter); }