The first fragment added to the adapter is not displayed. The second one is displayed perfectly. Databinding works, tried without ViewPager

Viewed 45

When adding fragments to the adapter, the first TariffUserAndQuestFragment is not displayed, everything is fine with the second TariffOurServicesFragment. I tried swapping them anyway TariffUserAndQuestFragment is empty. Checked without ViewPagerTariffAdapter(just using DataBinding) everything is displayed correctly)

MainActivity

 private void setupViewPager(ViewPager viewPager) {
        ViewPagerTariffAdapter adapter = new ViewPagerTariffAdapter(getSupportFragmentManager());
        adapter.addFragment(new TariffUserAndQuestFragment(this, tariffs), "Тарифы");
        adapter.addFragment(new TariffOurServicesFragment(this, services), Strings.isguest ? "Акции" : "Услуги");
        viewPager.setAdapter(adapter);
    }

TariffUserAndQuestFragment

public class TariffUserAndQuestFragment extends Fragment {

    Context context;
    List<Tarif> list;

    public TariffUserAndQuestFragment(Context context, List<Tarif> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        RecyclerView recyclerView = (RecyclerView) inflater.inflate(R.layout.content_tarifs,
                container, false);
        recyclerView.setLayoutManager(new LinearLayoutManager(context));

        if (!Strings.isguest)
            recyclerView.setAdapter(new TariffUserAdapterBinding(list));
        else
            recyclerView.setAdapter(new TariffGuestAdapterBinding(list));
        return recyclerView;
    }
}

TariffOurServicesFragment

public class TariffOurServicesFragment extends Fragment {

    Context context;
    List<OurService> list;

    public TariffOurServicesFragment(Context context, List<OurService> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        RecyclerView recyclerView = (RecyclerView) inflater.inflate(R.layout.content_tarifs,
                container, false);
        recyclerView.setLayoutManager(new LinearLayoutManager(context));
        recyclerView.setAdapter(new OurServiceBindingAdapter(list));
        return recyclerView;
    }
}

ViewPagerTariffAdapter

public class ViewPagerTariffAdapter extends FragmentPagerAdapter {

    private final List<Fragment> mFragmentList = new CopyOnWriteArrayList<>();
    private final List<String> mFragmentTitleList = new CopyOnWriteArrayList<>();

    public ViewPagerTariffAdapter(FragmentManager fm) {
        super(fm);
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }
}
0 Answers
Related