1.adapter:
public class ViewPager2FragmentAdapter extends FragmentStateAdapter {
private List<Fragment> fragmentList;//管理所有的fragment
public ViewPager2FragmentAdapter(@NonNull FragmentActivity fragmentActivity, List<Fragment> fragmentList) {
super(fragmentActivity);
this.fragmentList = fragmentList;
}
@NonNull
@Override
public Fragment createFragment(int position) {
return fragmentList.get(position);
}
@Override
public long getItemId(int position) {
return fragmentList.get(position).hashCode();//唯一标识,可以用其他,具体看需求
}
/**
* 异常问题:fragment already added
* @param itemId
* @return
*/
@Override
public boolean containsItem(long itemId) {//是否已包含:true不添加,false则添加
for(Fragment fragment:fragmentList){
if(fragment.hashCode()==itemId){
return true;
}
}
return false;
}
@Override
public int getItemCount() {
return fragmentList != null ? fragmentList.size() : 0;
}
}
2.添加到首位
fragmentList.add(0, LeftFragment.newInstance());
vp2Adapter.notifyItemInserted(0);