Android studio 我怎样才能以一种好的方式(Fragment和viewpager)做到这一点?

Android studio 我怎样才能以一种好的方式(Fragment和viewpager)做到这一点?,android-studio,android-fragments,android-viewpager2,Android Studio,Android Fragments,Android Viewpager2,我有这个项目(学校应用程序)为我的学校建设。由于缺乏想法,我创建了3个ViewPager2容器(SemesterFragment)来保存viewpager片段,再次创建了ViewPager2适配器类,以及3个填充的片段(CS\U学期、STA\U学期)类 每当在recyclerview中单击项目时,ViewPager2中的4个片段(sem1、sem2、sem3和sem4) 注: 我的应用程序运行得很好,正在做我想做的事情 问题: 尽管代码运行良好,但如果你能观察到,有很多很多声誉代码 我想让

我有这个项目(学校应用程序)为我的学校建设。由于缺乏想法,我创建了3个ViewPager2容器(SemesterFragment)来保存viewpager片段,再次创建了ViewPager2适配器类,以及3个填充的片段(CS\U学期STA\U学期)类 每当在recyclerview中单击项目时,ViewPager2中的4个片段(sem1、sem2、sem3和sem4

注:

  • 我的应用程序运行得很好,正在做我想做的事情
问题:

  • 尽管代码运行良好,但如果你能观察到,有很多很多声誉代码
  • 我想让每一门课都成为一门课,我怎么能??因为代码相同,只是数据不同。谢谢
CS_semests.java

package com.example.viewpager2;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class CS_Semesters extends Fragment{
    List<SemesterModelClass> mData,b;
    RVFragment adapter;
    RecyclerView recyclerView;

public CS_Semesters(int position) {
    mData = getList(position);
}
@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);

    recyclerView.setAdapter(adapter);
    return view;
}

private List<SemesterModelClass> getList(int position) {
    List<SemesterModelClass> 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 {
        //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;
}
}

 
package com.example.viewpager2;

import android.os.Bundle;

import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

public class STA_Semesters extends Fragment {
    List<SemesterModelClass> mData;
    RVFragment adapter;
    RecyclerView recyclerView;

public STA_Semesters(int position) {
    mData = getList(position);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    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);
    recyclerView.setAdapter(adapter);
    return view;
}

private  List<SemesterModelClass>  getList(int position){
    List<SemesterModelClass> list = new ArrayList<>();
    if(position == 0) {
        //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 == 1) {
        //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 == 2) {
        //fragment three inside viewpager whenever item2 is clicked from the recyclerView
        list.add(new SemesterModelClass("svsvdvas", "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{
        //fragment four inside viewpager whenever item2 is clicked from the recyclerView
        list.add(new SemesterModelClass("sem4ffffffff", "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;
    }
}
package com.example.viewpager2;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class SLT_Semesters extends Fragment {
    List<SemesterModelClass> mData;
    RVFragment adapter;
    RecyclerView recyclerView;
public SLT_Semesters(int position) {
    mData = getList(position);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    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);
    recyclerView.setAdapter(adapter);

    return view;
}

private  List<SemesterModelClass>  getList(int position){
    List<SemesterModelClass> list = new ArrayList<>();
    if(position == 0) {
        //fragment one inside viewpager whenever item3 is clicked from the recyclerView
        list.add(new SemesterModelClass("titration", "SLT 111", "3"));
        list.add(new SemesterModelClass("matter", "SLT 112", "4"));
        list.add(new SemesterModelClass("element", "SLT 113", "3"));
        list.add(new SemesterModelClass("pratical", "SLT 114", "4"));
    }else if(position == 1) {
        //fragment two inside viewpager whenever item3 is clicked from the recyclerView
        list.add(new SemesterModelClass("set theory", "SLT 111", "3"));
        list.add(new SemesterModelClass("dedvwvdv", "SLT 112", "4"));
        list.add(new SemesterModelClass("fbcfvdv", "SLT 113", "3"));
        list.add(new SemesterModelClass("cvsvsdvs", "SLT 114", "4"));
    }else if(position == 2) {
        //fragment three inside viewpager whenever item3 is clicked from the recyclerView
        list.add(new SemesterModelClass("svsvdvas", "SLT 111", "3"));
        list.add(new SemesterModelClass("semdvbv3", "SLT 112", "4"));
        list.add(new SemesterModelClass("dedgsedv", "SLT 113", "3"));
        list.add(new SemesterModelClass("frgs", "SLT 114", "4"));
    }else{
        //fragment four inside viewpager whenever item3 is clicked from the recyclerView
        list.add(new SemesterModelClass("sem4ffffffff", "SLT 111", "3"));
        list.add(new SemesterModelClass("sem4fff", "SLT 112", "4"));
        list.add(new SemesterModelClass("sem4gtgg", "SLT 113", "3"));
        list.add(new SemesterModelClass("sem4uku", "SLT 114", "4"));
    }
    return list;
 }
}
MyViewPager2.java

package com.example.viewpager2;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import androidx.viewpager2.adapter.FragmentStateAdapter;

public class MyViewPager2 extends FragmentStateAdapter {

    public MyViewPager2(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
        super(fragmentManager, lifecycle);
    }
    @NonNull
    @Override
    public Fragment createFragment(int position) {
        return new STA_Semesters(position);
    }
    @Override
    public int getItemCount() {
        return 4;
    }
}
MyViewPager3.java

package com.example.viewpager2;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import androidx.viewpager2.adapter.FragmentStateAdapter;

public class MyViewPager3 extends FragmentStateAdapter {

    public MyViewPager3(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
        super(fragmentManager, lifecycle);
    }
    @NonNull
    @Override
    public Fragment createFragment(int position) {
        return new SLT_Semesters(position);
    }
    @Override
    public int getItemCount() {
        return 4;
    }
}
SemesterFragment.java

package com.example.viewpager2;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;

import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;

public class SemesterFragment extends Fragment{
    TabLayout tabLayout;
    ViewPager2 viewPager2;
    MyViewPager adapter;
    CS_Semesters s;
    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();
        return view;
    }


}
SemesterFragment2.java

package com.example.viewpager2;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;

import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;

public class SemesterFragment2 extends Fragment{
    TabLayout tabLayout;
    ViewPager2 viewPager2;
    MyViewPager2 adapter;

    public SemesterFragment2() {

    }
    @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 MyViewPager2(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();

        return view;
    }
}
SemesterFragment3.java

 package com.example.viewpager2;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;

import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;

public class SemesterFragment3 extends Fragment{
    TabLayout tabLayout;
    ViewPager2 viewPager2;
    MyViewPager3 adapter;

    public SemesterFragment3() {

    }
    @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 MyViewPager3(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();

        return view;
    }
}
 package com.example.viewpager2;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;

import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;

public class SemesterFragment3 extends Fragment{
    TabLayout tabLayout;
    ViewPager2 viewPager2;
    MyViewPager3 adapter;

    public SemesterFragment3() {

    }
    @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 MyViewPager3(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();

        return view;
    }
}