Android studio 我怎样才能以一种好的方式(Fragment和viewpager)做到这一点?
我有这个项目(学校应用程序)为我的学校建设。由于缺乏想法,我创建了3个ViewPager2容器(SemesterFragment)来保存viewpager片段,再次创建了ViewPager2适配器类,以及3个填充的片段(CS\U学期、STA\U学期)类 每当在recyclerview中单击项目时,ViewPager2中的4个片段(sem1、sem2、sem3和sem4) 注: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) 注: 我的应用程序运行得很好,正在做我想做的事情 问题: 尽管代码运行良好,但如果你能观察到,有很多很多声誉代码 我想让
- 我的应用程序运行得很好,正在做我想做的事情
- 尽管代码运行良好,但如果你能观察到,有很多很多声誉代码
- 我想让每一门课都成为一门课,我怎么能??因为代码相同,只是数据不同。谢谢
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;
}
}