我如何 return 将在回收站视图中单击的项目的相应数据发送到 viewpager2?
How do I return the respective data to viewpager2 on an item clicked in a recycler view?
我有数据(部门)列表 在回收站视图中,当我单击 item1 时,我现在在 MyViewPager2 中填充 四个 个学期片段。我如何为 Item2 做点击以在 viewpager2 中加载它的特定学期片段。
注:
Item1 上的点击效果很好,item2 呢?这些评论说明了我需要的一切。以下是我所拥有的。谢谢
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) {
//this returns Semester(position) but only the data for an item2 clicked in a recyclerview display
// to me is like here, will return all data inside viewpager in their respective item clicked
return new Semesters(position);
}
@Override
public int getItemCount() {
return 4;// i have changing this to 8 two but kept on inflate the same item Clicked
}
}
DepartmentRVAdapter.java
package com.example.viewpager2;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import java.util.Objects;
public class DepartmentRVAdapter extends RecyclerView.Adapter<DepartmentRVAdapter.MyViewHolder> {
List<DepartmentModel> mData;
LayoutInflater inflater;
Context context;
ClickInterface clickInterface;
DepartmentFragment departmentFragment;
public DepartmentRVAdapter(List<DepartmentModel> mData, Context context, ClickInterface clickInterface, DepartmentFragment sf) {
this.mData=mData;
this.context=context;
this.clickInterface=clickInterface;
departmentFragment =sf;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.row_department_xml,parent,false);
MyViewHolder vh = new MyViewHolder(view);
return vh;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.imgDepLogo.setImageResource(mData.get(position).getDepLogo());
holder.tvDepName.setText(mData.get(position).getDepName());
}
@Override
public int getItemCount() {
return mData.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
ImageView imgDepLogo;
TextView tvDepName;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
imgDepLogo = itemView.findViewById(R.id.imgDeptLogo);
tvDepName = itemView.findViewById(R.id.tvDepName);
tvDepName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickInterface.onItemClickListener(getLayoutPosition());
switch (getAdapterPosition()){
//loads department best on the position that user click
case 0:
// it loads all departments in the school
Objects.requireNonNull(departmentFragment.getActivity()).getSupportFragmentManager()
.beginTransaction()
// .setCustomAnimations(R.anim.slide_in_left,R.anim.exit_to_right)
.replace(R.id.frameLayout,new SemesterFragment())
.addToBackStack(null).
commit();
break;
case 1:
// it loads all departments in the school
// Objects.requireNonNull(departmentFragment.getActivity()).getSupportFragmentManager()
// .beginTransaction()
// // .setCustomAnimations(R.anim.slide_in_left,R.anim.exit_to_left,R.anim.enter_from_right,R.anim.exit_to_left)
// .replace(R.id.frameLayout,new SemesterFragment())
// .addToBackStack(null).
// commit();
// break;
}
}
});
}
}
}
DepartmentFragment.java
package com.example.viewpager2;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
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 DepartmentFragment extends Fragment implements ClickInterface {
List<DepartmentModel> mData;
DepartmentRVAdapter adapter;
RecyclerView recyclerView;
public DepartmentFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_start,container,false);
recyclerView = view.findViewById(R.id.recyclerView);
mData = new ArrayList<>();
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(linearLayoutManager);
adapter = new DepartmentRVAdapter(mData,getContext(),this, DepartmentFragment.this);
//list of departments in the school
mData.add(new DepartmentModel("Computer Science",R.drawable.glogo));
mData.add(new DepartmentModel("Statistic",R.drawable.horse));
recyclerView.setAdapter(adapter);
return view;
}
//here implement interface class methods
@Override
public void onItemClickListener(int position) {
Toast.makeText(getContext(),"clicked " + mData.get(position).getDepName(), Toast.LENGTH_LONG).show();
}
@Override
public void onItemLongClickListener(int position) {
}
}
Semesters.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.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class Semesters extends Fragment{
List<SemesterModelClass> mData;
RVFragment adapter;
RecyclerView recyclerView;
public 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;
}
//Note:
//It worked perfect when the user click on ITEM1 (ONE) in the recyclerview.
//What i want is for the ITEM2 (TWO) to do thesame
private List<SemesterModelClass> getList(int position) {
List<SemesterModelClass> list = new ArrayList<>();
// onItem1 (one) clicked in a recyclerview,
// these data are populated in their respective fragment in a viewpager2
if (position == 0) {
// this populate first semester fragment inside viewpager2
// if the user click on item1 in a recyclerView
list.add(new SemesterModelClass("sem1", "com111", "3"));
list.add(new SemesterModelClass("sem1", "com222", "5"));
list.add(new SemesterModelClass("sem1", "com121", "4"));
} else if (position == 1) {
// this populate second semester fragment inside viewpager2
// if the user click on item1 in a 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) {
// this populate third semester fragment inside viewpager2
// if the user click on item1 in a recyclerView
list.add(new SemesterModelClass("sem3", "com111", "3"));
list.add(new SemesterModelClass("sem3", "com222", "5"));
list.add(new SemesterModelClass("sem3", "com121", "4"));
} else {
// this populate fourth semester fragment inside viewpager2
// if the user click on item1 in a recyclerView
list.add(new SemesterModelClass("sem4", "com111", "3"));
list.add(new SemesterModelClass("sem4", "com222", "5"));
list.add(new SemesterModelClass("sem4", "com121", "4"));
}
return list;
}
//***********************************************************************************************
// onItem2 (two) clicked in a recyclerview,
// i want to do thesame thing without creating another similar class like this
private List<SemesterModelClass> getList(int position){
List<SemesterModelClass> list = new ArrayList<>();
if(position == 0) {
// i want to populate first semester fragment inside viewpager2
// if the user click on item2 (two) in a recyclerView
list.add(new SemesterModelClass("sem1 descriptive", "STA 111", "3"));
list.add(new SemesterModelClass("sem1 set theory", "STA 112", "4"));
list.add(new SemesterModelClass("sem1 algebra", "STA 113", "3"));
list.add(new SemesterModelClass("sem1 logic", "STA 114", "4"));
}else if(position == 1) {
// i want to populate second semester fragment inside viewpager2
// if the user click on item2 (two) in a recyclerView
list.add(new SemesterModelClass("sem1 descriptive", "STA 111", "3"));
list.add(new SemesterModelClass("sem1 set theory", "STA 112", "4"));
list.add(new SemesterModelClass("sem1 algebra", "STA 113", "3"));
list.add(new SemesterModelClass("sem1 logic", "STA 114", "4"));
}else if(position == 2) {
// i want to populate third semester fragment inside viewpager2
// if the user click on item2 (two) in a recyclerView
list.add(new SemesterModelClass("sem1 descriptive", "STA 111", "3"));
list.add(new SemesterModelClass("sem1 set theory", "STA 112", "4"));
list.add(new SemesterModelClass("sem1 algebra", "STA 113", "3"));
list.add(new SemesterModelClass("sem1 logic", "STA 114", "4"));
}else{
// i want to populate fourth semester fragment inside viewpager2
// if the user click on item2 (two) in a recyclerView
list.add(new SemesterModelClass("sem1 descriptive", "STA 111", "3"));
list.add(new SemesterModelClass("sem1 set theory", "STA 112", "4"));
list.add(new SemesterModelClass("sem1 algebra", "STA 113", "3"));
list.add(new SemesterModelClass("sem1 logic", "STA 114", "4"));
}
return list;
}
}
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;
MyViewPager2 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 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;
}
}
问题是您没有向采用者添加片段。如果我们说 getItemCount() returns 4.
它不会自己完成所有操作
修改 MyViewPager2.java,将您的 CreateFragment 方法替换为类似的东西。
public Fragment createFragment(int position) {
// the following should work but I would prefer to have more control over things so would use fragment list.
//return new Semesters(position);
// like this
return mSemestersList.get(position);
}
接下来您必须定义一个方法来将片段添加到您的列表中。
public void addFragment(Fragment fragment, String title ){
this.mFragmentsList.add(fragment);
this.mFragmentsTitleList.add(title);
}
还有 return getItemCount 方法中 mFragmentsList 的大小。
最后在您的 SemesterFragment.java 中调用 addFragment()。
adapter = new MyViewPager2(getChildFragmentManager(),this.getLifecycle());
adapter.addFragment(new Semesters(1),"Fall Semester 1");
// and so on for all four semesters.
我有数据(部门)列表 在回收站视图中,当我单击 item1 时,我现在在 MyViewPager2 中填充 四个 个学期片段。我如何为 Item2 做点击以在 viewpager2 中加载它的特定学期片段。
注:
Item1 上的点击效果很好,item2 呢?这些评论说明了我需要的一切。以下是我所拥有的。谢谢
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) {
//this returns Semester(position) but only the data for an item2 clicked in a recyclerview display
// to me is like here, will return all data inside viewpager in their respective item clicked
return new Semesters(position);
}
@Override
public int getItemCount() {
return 4;// i have changing this to 8 two but kept on inflate the same item Clicked
}
}
DepartmentRVAdapter.java
package com.example.viewpager2;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import java.util.Objects;
public class DepartmentRVAdapter extends RecyclerView.Adapter<DepartmentRVAdapter.MyViewHolder> {
List<DepartmentModel> mData;
LayoutInflater inflater;
Context context;
ClickInterface clickInterface;
DepartmentFragment departmentFragment;
public DepartmentRVAdapter(List<DepartmentModel> mData, Context context, ClickInterface clickInterface, DepartmentFragment sf) {
this.mData=mData;
this.context=context;
this.clickInterface=clickInterface;
departmentFragment =sf;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.row_department_xml,parent,false);
MyViewHolder vh = new MyViewHolder(view);
return vh;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.imgDepLogo.setImageResource(mData.get(position).getDepLogo());
holder.tvDepName.setText(mData.get(position).getDepName());
}
@Override
public int getItemCount() {
return mData.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
ImageView imgDepLogo;
TextView tvDepName;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
imgDepLogo = itemView.findViewById(R.id.imgDeptLogo);
tvDepName = itemView.findViewById(R.id.tvDepName);
tvDepName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickInterface.onItemClickListener(getLayoutPosition());
switch (getAdapterPosition()){
//loads department best on the position that user click
case 0:
// it loads all departments in the school
Objects.requireNonNull(departmentFragment.getActivity()).getSupportFragmentManager()
.beginTransaction()
// .setCustomAnimations(R.anim.slide_in_left,R.anim.exit_to_right)
.replace(R.id.frameLayout,new SemesterFragment())
.addToBackStack(null).
commit();
break;
case 1:
// it loads all departments in the school
// Objects.requireNonNull(departmentFragment.getActivity()).getSupportFragmentManager()
// .beginTransaction()
// // .setCustomAnimations(R.anim.slide_in_left,R.anim.exit_to_left,R.anim.enter_from_right,R.anim.exit_to_left)
// .replace(R.id.frameLayout,new SemesterFragment())
// .addToBackStack(null).
// commit();
// break;
}
}
});
}
}
}
DepartmentFragment.java
package com.example.viewpager2;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
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 DepartmentFragment extends Fragment implements ClickInterface {
List<DepartmentModel> mData;
DepartmentRVAdapter adapter;
RecyclerView recyclerView;
public DepartmentFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_start,container,false);
recyclerView = view.findViewById(R.id.recyclerView);
mData = new ArrayList<>();
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(linearLayoutManager);
adapter = new DepartmentRVAdapter(mData,getContext(),this, DepartmentFragment.this);
//list of departments in the school
mData.add(new DepartmentModel("Computer Science",R.drawable.glogo));
mData.add(new DepartmentModel("Statistic",R.drawable.horse));
recyclerView.setAdapter(adapter);
return view;
}
//here implement interface class methods
@Override
public void onItemClickListener(int position) {
Toast.makeText(getContext(),"clicked " + mData.get(position).getDepName(), Toast.LENGTH_LONG).show();
}
@Override
public void onItemLongClickListener(int position) {
}
}
Semesters.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.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class Semesters extends Fragment{
List<SemesterModelClass> mData;
RVFragment adapter;
RecyclerView recyclerView;
public 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;
}
//Note:
//It worked perfect when the user click on ITEM1 (ONE) in the recyclerview.
//What i want is for the ITEM2 (TWO) to do thesame
private List<SemesterModelClass> getList(int position) {
List<SemesterModelClass> list = new ArrayList<>();
// onItem1 (one) clicked in a recyclerview,
// these data are populated in their respective fragment in a viewpager2
if (position == 0) {
// this populate first semester fragment inside viewpager2
// if the user click on item1 in a recyclerView
list.add(new SemesterModelClass("sem1", "com111", "3"));
list.add(new SemesterModelClass("sem1", "com222", "5"));
list.add(new SemesterModelClass("sem1", "com121", "4"));
} else if (position == 1) {
// this populate second semester fragment inside viewpager2
// if the user click on item1 in a 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) {
// this populate third semester fragment inside viewpager2
// if the user click on item1 in a recyclerView
list.add(new SemesterModelClass("sem3", "com111", "3"));
list.add(new SemesterModelClass("sem3", "com222", "5"));
list.add(new SemesterModelClass("sem3", "com121", "4"));
} else {
// this populate fourth semester fragment inside viewpager2
// if the user click on item1 in a recyclerView
list.add(new SemesterModelClass("sem4", "com111", "3"));
list.add(new SemesterModelClass("sem4", "com222", "5"));
list.add(new SemesterModelClass("sem4", "com121", "4"));
}
return list;
}
//***********************************************************************************************
// onItem2 (two) clicked in a recyclerview,
// i want to do thesame thing without creating another similar class like this
private List<SemesterModelClass> getList(int position){
List<SemesterModelClass> list = new ArrayList<>();
if(position == 0) {
// i want to populate first semester fragment inside viewpager2
// if the user click on item2 (two) in a recyclerView
list.add(new SemesterModelClass("sem1 descriptive", "STA 111", "3"));
list.add(new SemesterModelClass("sem1 set theory", "STA 112", "4"));
list.add(new SemesterModelClass("sem1 algebra", "STA 113", "3"));
list.add(new SemesterModelClass("sem1 logic", "STA 114", "4"));
}else if(position == 1) {
// i want to populate second semester fragment inside viewpager2
// if the user click on item2 (two) in a recyclerView
list.add(new SemesterModelClass("sem1 descriptive", "STA 111", "3"));
list.add(new SemesterModelClass("sem1 set theory", "STA 112", "4"));
list.add(new SemesterModelClass("sem1 algebra", "STA 113", "3"));
list.add(new SemesterModelClass("sem1 logic", "STA 114", "4"));
}else if(position == 2) {
// i want to populate third semester fragment inside viewpager2
// if the user click on item2 (two) in a recyclerView
list.add(new SemesterModelClass("sem1 descriptive", "STA 111", "3"));
list.add(new SemesterModelClass("sem1 set theory", "STA 112", "4"));
list.add(new SemesterModelClass("sem1 algebra", "STA 113", "3"));
list.add(new SemesterModelClass("sem1 logic", "STA 114", "4"));
}else{
// i want to populate fourth semester fragment inside viewpager2
// if the user click on item2 (two) in a recyclerView
list.add(new SemesterModelClass("sem1 descriptive", "STA 111", "3"));
list.add(new SemesterModelClass("sem1 set theory", "STA 112", "4"));
list.add(new SemesterModelClass("sem1 algebra", "STA 113", "3"));
list.add(new SemesterModelClass("sem1 logic", "STA 114", "4"));
}
return list;
}
}
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;
MyViewPager2 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 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;
}
}
问题是您没有向采用者添加片段。如果我们说 getItemCount() returns 4.
它不会自己完成所有操作修改 MyViewPager2.java,将您的 CreateFragment 方法替换为类似的东西。
public Fragment createFragment(int position) {
// the following should work but I would prefer to have more control over things so would use fragment list.
//return new Semesters(position);
// like this
return mSemestersList.get(position);
}
接下来您必须定义一个方法来将片段添加到您的列表中。
public void addFragment(Fragment fragment, String title ){
this.mFragmentsList.add(fragment);
this.mFragmentsTitleList.add(title);
}
还有 return getItemCount 方法中 mFragmentsList 的大小。
最后在您的 SemesterFragment.java 中调用 addFragment()。
adapter = new MyViewPager2(getChildFragmentManager(),this.getLifecycle());
adapter.addFragment(new Semesters(1),"Fall Semester 1");
// and so on for all four semesters.