我无法从RecyclerView适配器调用ViewPager中的方法



每当用户点击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.
}

关于对上述回收查看项目的响应点击事件处理.希望对你有用

相关内容

最新更新