Call method from Fragment in Fragment that has ViewPager2

Viewed 211

I have these two methods getCsList (int position) and getStaList (int position) Semesters.javaand each of these methods has to populates 4 Fragments inside Viewpager2 .How can I call these methods please. This is what I have below.Thanks

Viewpager adapter MyViewPager.java

public class MyViewPager extends FragmentStateAdapter {
List<Fragment> fragmentList = new ArrayList<>();

public MyViewPager(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
    super(fragmentManager, lifecycle);
}

@NonNull
@Override
public Fragment createFragment(int position) {
    return fragmentList.get(position);
}

@Override
public int getItemCount() {
    return fragmentList.size();
}

public void addFrags(Fragment fragment) {
    fragmentList.add(fragment);
}
}

Initialize my viewpager and Tablayout

SemestersFragment.java

public class SemesterFragment extends Fragment {
TabLayout tabLayout;
ViewPager2 viewPager2;
MyViewPager adapter;

public SemesterFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_semester, container, false);
    viewPager2 = (ViewPager2) view.findViewById(R.id.viewPager2);
    tabLayout = view.findViewById(R.id.tabLayout);
    adapter = new MyViewPager(getChildFragmentManager(), this.getLifecycle());
    viewPager2.setAdapter(adapter);
    new TabLayoutMediator(tabLayout, viewPager2, new TabLayoutMediator.TabConfigurationStrategy() {
        @Override
        public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
            tab.setText("Sem" + (position + 1));
        }
    }).attach();
    addComputerScienceSem();
    adapter.notifyDataSetChanged();
    return view;
}

private void addComputerScienceSem() {
    adapter.addFrags(new Semesters().newInstance(0, 1));
    adapter.addFrags(new Semesters().newInstance(0, 2));
    adapter.addFrags(new Semesters().newInstance(0, 3));
    adapter.addFrags(new Semesters().newInstance(0, 4));
}
}

The Fragment that holds the two methods each containing the data to populates to 4 Fragments inside viewpager, how can I call these methods: getCsList(int position) and getStaList(int position) from SemestersFragment.java??

Semester.java

public class Semesters extends Fragment {
List mData;
RVFragment adapter;
RecyclerView recyclerView;

public Semesters() {
}

public static Semesters newInstance(int index, int position) {
    Semesters fragment = new Semesters();
    Bundle args = new Bundle();
    args.putInt("index", index);
    args.putInt("position", position);
    fragment.setArguments(args);
    return fragment;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment, container, false);
    recyclerView = view.findViewById(R.id.recyclerView);
    LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
    recyclerView.setLayoutManager(layoutManager);
    adapter = new RVFragment(getContext(), mData);
    if (getArguments().getInt("index", 0) == 0) {
        mData = getCSList(getArguments().getInt("position", 0));
    } else if (getArguments().getInt("index", 0) == 1) {
        mData = getSTAList(getArguments().getInt("position", 0));
    }
    recyclerView.setAdapter(adapter);
    return view;
}

private List getCSList(int position) {
    List list = new ArrayList<>();
    if (position == 0) { //fragment one inside viewpager whenever item1 is clicked from the recyclerView 
        list.add(new SemesterModelClass("intro. to comp", "com101", "3"));
        list.add(new SemesterModelClass("digital electonics", "com112", "3"));
        list.add(new SemesterModelClass("intro to programming", "com113", "4"));
    } else if (position == 1) { //fragment two inside viewpager whenever item1 is clicked from the recyclerView 
        list.add(new SemesterModelClass("sem2", "com111", "3"));
        list.add(new SemesterModelClass("sem2", "com222", "5"));
        list.add(new SemesterModelClass("sem2", "com121", "4"));
    } else if (position == 2) { //fragment three inside viewpager whenever item1 is clicked from the recyclerView 
        list.add(new SemesterModelClass("sem3", "com111", "3"));
        list.add(new SemesterModelClass("sem3", "com222", "5"));
        list.add(new SemesterModelClass("sem3", "com121", "4"));
    } else if (position == 3) { //fragment four inside viewpager whenever item1 is clicked from the recyclerView 
        list.add(new SemesterModelClass("sem4", "com111", "3"));
        list.add(new SemesterModelClass("sem4", "com222", "5"));
        list.add(new SemesterModelClass("sem4", "com121", "4"));
    }
    return list;
}

private List getSTAList(int position) {
    List list = new ArrayList<>();
    if (position == 4) { //fragment one inside viewpager whenever item2 is clicked from the recyclerView 
        list.add(new SemesterModelClass("probability", "STA 111", "3"));
        list.add(new SemesterModelClass("algebra", "STA 112", "4"));
        list.add(new SemesterModelClass("logic", "STA 113", "3"));
        list.add(new SemesterModelClass("geometri func", "STA 114", "4"));
    } else if (position == 5) { //fragment two inside viewpager whenever item2 is clicked from the recyclerView 
        list.add(new SemesterModelClass("set theory", "STA 111", "3"));
        list.add(new SemesterModelClass("dedvwvdv", "STA 112", "4"));
        list.add(new SemesterModelClass("fbcfvdv", "STA 113", "3"));
        list.add(new SemesterModelClass("cvsvsdvs", "STA 114", "4"));
    } else if (position == 6) { //fragment three inside viewpager whenever item2 is clicked from the recyclerView 
        list.add(new SemesterModelClass("geo", "STA 111", "3"));
        list.add(new SemesterModelClass("semdvbv3", "STA 112", "4"));
        list.add(new SemesterModelClass("dedgsedv", "STA 113", "3"));
        list.add(new SemesterModelClass("frgs", "STA 114", "4"));
    } else if (position == 7) { //fragment four inside viewpager whenever item2 is clicked from the recyclerView 
        list.add(new SemesterModelClass("log", "STA 111", "3"));
        list.add(new SemesterModelClass("sem4fff", "STA 112", "4"));
        list.add(new SemesterModelClass("sem4gtgg", "STA 113", "3"));
        list.add(new SemesterModelClass("sem4uku", "STA 114", "4"));
    }
    return list;
}
}
0 Answers
Related