将视图动态添加到 Viewpager 托管的片段

Dynamically add views to fragment hosted by Viewpager

我想将 7 个以前创建的视图动态添加到我的 viewpager。

我最终尝试实现的是屏幕的一部分(50dp 高度,match_parent 宽度)看起来像这样。


|视图 1 |视图 2 |


当我向右滑动时,显示的项目将是VIEW 2和VIEW 3,下一次滑动将是VIEW 3和VIEW 4,依此类推。

我的问题是我的 7 个视图已经在我的主要片段的 onCreateView 中创建。我想将它们动态添加到 FragmentStatePagerAdapter 中定义的片段中。

public class MyPagerAdapter extends FragmentStatePagerAdapter {
    private View view1Layout;
    private View view2Layout;

    public MyPagerAdapter(FragmentManager fm, View view1Layout, View view2Layout) {
        super(fm);
        this.view1Layout = view1Layout;
        this.view2Layout = view2Layout;
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = new MyFragment();

        LinearLayout rootLayout = ((LinearLayout) fragment.getView().getRootView());

        switch (position % 7) {
            case 0:
                rootLayout.addView(view1Layout);
                rootLayout.addView(view2Layout);
                break;
            case 1:
                // ....
                break;
        }

        return fragment;
    }

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


public static class MyFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.layout_dashboard_line, container, false);
    }
}

正如你所想象的,当我尝试获取 rootLayout 时它会崩溃,因为此时 fragment 没有被实例化。是否有实现我想要的目标的好方法,如果没有,是否有解决方法?

谢谢!

我做错了...

我不应该传递视图,即使在我的情况下它更方便,但我应该传递包含在这些视图中的数据并根据显示的片段刷新它们。