将视图动态添加到 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 没有被实例化。是否有实现我想要的目标的好方法,如果没有,是否有解决方法?
谢谢!
我做错了...
我不应该传递视图,即使在我的情况下它更方便,但我应该传递包含在这些视图中的数据并根据显示的片段刷新它们。
我想将 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 没有被实例化。是否有实现我想要的目标的好方法,如果没有,是否有解决方法?
谢谢!
我做错了...
我不应该传递视图,即使在我的情况下它更方便,但我应该传递包含在这些视图中的数据并根据显示的片段刷新它们。