android开发 记录ViewPager2

mac2022-06-30  22

引入

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(); } }
最新回复(0)