每当用户点击recyclerview中的项目时,我都需要调用一个方法,将相应的片段添加到viewpager中。我该怎么做??,下面是我的代码。感谢
SemesterFragmentViewPager.java
public SemesterFragmentViewPager() {
}
@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();
// cs();
adapter.notifyDataSetChanged();
return view;
}
public void addComputerScienceSem() {
adapter.addFrags(Semesters.newInstance(0, 0));
adapter.addFrags(Semesters.newInstance(0,1));
adapter.addFrags(Semesters.newInstance(0,2));
adapter.addFrags(Semesters.newInstance(0,3));
}
public void cs(){
adapter.addFrags(Semesters.newInstance(0,4));
adapter.addFrags(Semesters.newInstance(0,5));
}
}
下面我想实现的是,当的情况为0时,我应该调用cs() method from SemesterFragmentViewPager.java
,但不工作,为什么
部门RVAdapter.java
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()){
case 0:
Objects.requireNonNull(departmentFragment.getActivity()).getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frameLayout,new SemesterFragmentViewPager().cs())// it couldnt work
.addToBackStack(null).
commit();
break;
当的情况是1时,我应该调用addComputerScienceSem() method from SemesterFragmentViewPager.java
,但不工作
case 1:
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 SemesterFragmentViewPager().addComputerScienceSem())// it couldnt work too
.addToBackStack(null).
commit();
break;
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);
}
}
步骤1:您应该创建回调(接口(
interface HandleClickItemsRecycleview{
void onclickItemRecycleView()
}
并设置为Adapter Recycleview Constructor
步骤2:使用SemesterFragmentViewPager 实现回调
SemesterFragmentViewPager implement HandleClickItemsRecycleview
功能覆盖
void onClickItemRecyleview(){
// Action Add Fragment To ViewPager.
}
关于对上述回收查看项目的响应点击事件处理.希望对你有用