在制作高效的滑动视图方面需要指导

Need guidance in making efficient swipe views

android 的新手,最近学习了一些滑动视图。在我的应用程序中,它有 17 章,每章有 30 页,其中包含一些文本数据,用户可以滑动浏览。我需要使用 FragmentStatePagerAdapter 来节省内存,但我需要知道我是否需要制作 510 个 Fragment 对象,即 510 XML 布局?我只需要更改每个页面中的文本,我已经看到很多人使用这样的 switch 语句

@Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            return  new FragmentOne();
        case 1:
            return  new FragmentTwo();
        default:
            break;
    }
    return null;
}

难道I/Should我每章写30个案例?还是有更好的方法来做到这一点?我用谷歌搜索并看过很多 Youtube 视频,但找不到解决方案。我请求大家,如果你在回答或评论,请解释你的代码,因为我相信学习,而不是复制粘贴。

使用 FragmentStatePagerAdapter 是正确的方法。它将根据您设置的 viepager offscreenLimit() 来管理片段状态。

在您的情况下,您可以只有一个片段和一个文本数组列表,并根据位置给出不同的文本。

像这样..

List<String> yourList = new ArrayList<>();

@Override
public Fragment getItem(int position) {
    return new YourFragment(yourList.get(position));
}

这很简单!

你只需要一个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;
}
}

最后主持人 activity

@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);
    }
}