0

I have activity with full-screen ViewPager. Problem is - when I do the first scroll it is very laggy. It happens in an emulator and physical device. I think at that moment adapter inflates other pages and I want to force ViewPager or adapter to create all (3) pages at activity's onCreate.

Here is my code:

Activity onCreate()

adapter = new TutorialPageAdapter();
viewPager.setAdapter(adapter);
dotsIndicator.setViewPager2(viewPager);

Adapter:

public class TutorialPageAdapter extends RecyclerView.Adapter<TutorialPageAdapter.TutorialItemHolder> {

    int[] items = {R.layout.tutorial_item_1_layout, R.layout.tutorial_item_2_layout, R.layout.tutorial_item_3_layout };

    @NonNull
    @Override
    public TutorialItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View layoutView = LayoutInflater.from(parent.getContext()).inflate(items[viewType], parent, false);
        return new TutorialItemHolder(layoutView);
    }

    @Override
    public int getItemViewType(int position) {
        return position;
    }

    @Override
    public void onBindViewHolder(@NonNull TutorialItemHolder holder, int position) {
    }

    public TutorialPageAdapter() {
        notifyDataSetChanged();
    }

    @Override
    public int getItemCount() {
        return items.length;
    }

    class TutorialItemHolder extends RecyclerView.ViewHolder {

        public TutorialItemHolder(@NonNull View itemView) {
            super(itemView);
        }
    }
}
DenShlk
  • 47
  • 1
  • 7

1 Answers1

2

As I understand it, you want the number of fragments stored "behind the screen" to increase. You can use this code for this.

  

 viewPager.setOffscreenPageLimit(3);

Related question: link

Only then will the creation of the activity be long.

Razrab.ytka
  • 101
  • 4