android開發 記錄ViewPager2

引入

    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();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章