新的Android和最近学习的滑动视图。在我的应用程序中,它有17章,在每章中,将有30页包含一些文本数据,用户可以刷卡。我需要使用FragmentStatePagerAdapter来节省内存,但我需要知道我需要制作510 Fragment对象,意味着510 XML布局?我只需要更改每个页面中的文本,并且我已经看到很多人使用像这样的开关语句
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new FragmentOne();
case 1:
return new FragmentTwo();
default:
break;
}
return null;
}
我/我应该每章写30个案例吗?或者有更好的方法吗?我用Google搜索并看过很多Youtube视频,但无法找到解决方案。我要求每个人,如果你正在回答或评论,请解释你的代码,因为我相信学习,而不是复制粘贴。
答案 0 :(得分:0)
使用 FragmentStatePagerAdapter 是正确的方法。它将根据您设置的viepager offscreenLimit()管理片段状态。
在您的情况下,您可以只有一个片段和一个文本的数组列表,并根据位置给出不同的文本。
像这样......
List<String> yourList = new ArrayList<>();
@Override
public Fragment getItem(int position) {
return new YourFragment(yourList.get(position));
}
答案 1 :(得分:-1)
这是一个容易愚蠢的人!
您只需要一个Fragment对象,这里是代码
public class FragmentChild extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
// INFLATE THE LAYOUT THAT EACH FRAGMENT OBJECT WILL HAVE, PUT IT IN A VIEW
View root = inflater.inflate(R.layout.couplets, container, false);
// RECEIVE THE BUNDLE DATA SENT (ARGUMENTS)
Bundle args = getArguments();
// CREATE AN ARRAY LIST OF STRINGS THAT WILL HOLD TEXT
ArrayList<String> someText = new ArrayList<>();
someText.add("one");
someText.add("two");
someText.add("three");
TextView txt = (TextView) root.findViewById(R.id.text_view);
txt.setText(someText.get(args.getInt("position")));
return root;
}
自定义寻呼机适配器
class MyFragmentAdapter extends FragmentStatePagerAdapter {
MyFragmentAdapter(FragmentManager fm) {super(fm);}
@Override
public Fragment getItem(int position) {
Bundle args = new Bundle();
args.putInt("position", position);
Fragment fragment = new FragmentChild();
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 3;
}
}
最后主持活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chapter_one);
// FIND THE VIEWPAGER AND SET THE CUSTOM ADAPTER TO IT TO PROVIDE CHILD PAGES
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
MyFragmentAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
}
}