引入
implementation "androidx.viewpager2:viewpager2:1.0.0-beta04"
在布局中使用省略。
viewpager2使用的适配器是RecyclerView的适配器,所以会使用RecyclerView就会使用viewpager2。
与viewpager的相比,viewpager2的offscreenPageLimit能设置成0。
setOrientation可以设置布局方向,不但可以左右滑动也可以上下滑动。
使用RecyclerView.adapter
public class VP2Adapter extends RecyclerView.Adapter<VP2Adapter.MyHolder> {
List<String> stringList;
public VP2Adapter(List<String> stringList) {
this.stringList = stringList;
}
@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_my_holder, parent, false);
return new MyHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyHolder holder, int position) {
String item = stringList.get(position);
holder.my_holder_tv.setText(item);
}
@Override
public int getItemCount() {
return stringList.size();
}
class MyHolder extends RecyclerView.ViewHolder {
TextView my_holder_tv;
public MyHolder(@NonNull View itemView) {
super(itemView);
my_holder_tv = itemView.findViewById(R.id.my_holder_tv);
}
}
}
FragmentStateAdapter替代了FragmentStatePagerAdapter
public class Vp2FragAdapter extends FragmentStateAdapter {
private List<Fragment> fragments;
public Vp2FragAdapter(@NonNull FragmentActivity fragmentActivity, List<Fragment> fragments) {
super(fragmentActivity);
this.fragments = fragments;
}
@NonNull
@Override
public Fragment createFragment(int position) {
return fragments.get(position);
}
@Override
public int getItemCount() {
return fragments.size();
}
}