Заполните линейное отображение с помощью карт и просмотра - PullRequest
0 голосов
/ 24 сентября 2018

У меня проблема с попыткой заполнить линейный макет карточками внутри, а внутри них - пейджером, который заполнен двумя фрагментами.фрагменты заполнены данными, хранящимися в базе данных SQLite в цикле.

Проблема заключается в том, что только последний адаптер viewpager вызывает функцию getItem, в результате чего все карты пусты, кроме последней.

Это макет элемента

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="vertical">

    <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="10dp"
        card_view:cardCornerRadius="4dp">

        <com.jaimedediego.cubemaster.view.CustomViews.CustomViewPager
            android:id="@+id/detail_container"
            android:layout_width="match_parent"
            android:layout_height="100dp" />

    </android.support.v7.widget.CardView>

</LinearLayout>

CustomViewPager работает точно так же, как обычный просмотрщик.

Это функция, в которой внешний линейный макет заполняется элементами спредыдущий макет.Где timesDetail заполняется данными

        for (int i = 0; i < timesDetail.size(); i++) {
            final Detail detail = timesDetail.get(i);

            final View v = getLayoutInflater().inflate(R.layout.element_timesdetail_list, null);

            final CustomViewPager viewPager = v.findViewById(R.id.detail_container);

            viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
                @Override
                public Fragment getItem(int position) {
                    return PlaceholderFragmentDetail.newInstance(position, detail);
                }

                @Override
                public int getCount() {
                    return 2;
                }
            });

            timesLayout.addView(v);
        }
    }

Для каждого цикла следует вызывать getItem для вызова onCreateView PlaceholderFragmentDetail.но это не так (я думаю, что проблема здесь).И это делает все карты, кроме последнего, пустыми.

Вызов PlaceholderFragmentDetail равен

    public static class PlaceholderFragmentDetail extends Fragment {

        private static final String ARG_SECTION_NUMBER = "section_number";
        private static final String DETAIL = "detail";

        public PlaceholderFragmentDetail() {/*Do nothing*/}

        public static PlaceholderFragmentDetail newInstance(int sectionNumber, Detail detail) {
            PlaceholderFragmentDetail fragment = new PlaceholderFragmentDetail();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            args.putSerializable(DETAIL, detail);
            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View v;
            Detail detail = (Detail) getArguments().getSerializable(DETAIL);

            switch (getArguments().getInt(ARG_SECTION_NUMBER)) {
                case 0:
                    v = inflater.inflate(R.layout.fragment_detail, container, false);
                    break;
                case 1:
                    v = inflater.inflate(R.layout.layout_dialog_areyousure, container, false);
                    break;
                default:
                    v = null;
                    break;
            }
            return v;
        }
    }

Я действительно думаю, что проблема заключается в вызове getItem FragmentPagerAdapter, но я незнаете, что я делаю не так.

This is the current screen

...