java - 使用 ViewPager 保留一个具有多个 View 的 fragment

标签 java android android-fragments android-viewpager

我有几个问题,关于我想要实现什么,我还需要做多少事情,或者我是否需要走向不同的方向。

这是我想做的事情的模型:

enter image description here

用户应该能够:

-向左或向右滑动

-单击顶部的箭头向左或向右移动

View 集合不是固定的(它是动态的,并且是从数据库中提取的数字)

现在,我已经阅读了 ViewPager,我认为这是我可以用来实现我想做的事情的最接近的东西。

这是我的代码:

//ScorePager.java

public class ScorePager extends FragmentActivity {

    private PagerAdapter pagerAdapter;
    ActionBar actionbar;
    ViewPager viewPager = null;

    public static final String TAG ="ScorePager";

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        super.setContentView(R.layout.viewpager_view);

        viewPager = (ViewPager) findViewById(R.id.viewPager);
        FragmentManager fragmentManager = getSupportFragmentManager();
        viewPager.setAdapter(new myAdapter(fragmentManager));

    }

    private class myAdapter extends FragmentStatePagerAdapter {

        public myAdapter(FragmentManager fragmentManager) {

            super(fragmentManager);
        }

            @Override
            public Fragment getItem(int i){
                Fragment fragment = null;
            Log.d(TAG, "get Item is called " + i);
                if (i == 0) {
                    fragment = new ScoreFragment();
                }
               if (i == 1) {
                    fragment = new ScoreFragmentB();
                }

                return fragment;
            }

            @Override
            public int getCount () {
            Log.d(TAG, "get Count is called");
                return 2;
            }
        }
    }

问题是,在某些时候我会存储太多的 fragment 。例如。如果我需要显示 20 个新 View ,那么我将必须按照上面编码的方式拥有 20 个 fragment 。

现在,我有两个 fragment 和两个显示为硬编码的 View 。有没有办法制作动态 fragment 布局?我从未使用过动态 View ,所以我想使这个过程更清晰并且代码更少。

我是否可以拥有一个 fragment 和一个布局 View 。如果是这样,如何仅用一个 fragment 和一个 View 来更改 View 状态?

另外,选项卡式标题栏似乎是 ViewPager 的唯一选项,如果我想在图像中使用这样的箭头,有没有办法插入这些箭头而无需滚动多个选项卡。

从这里我可以去哪里?

最佳答案

Is there a way to make a dynamic fragment layout?

我不明白为什么您需要动态 fragment 布局,因为根据上面的小图,所有 View 看起来几乎相似,除了箭头(您可以随时根据位置更改其可见性)。

Is it possible for me to have one fragment and one layout view.

由于所有 fragment 的布局相似,因此您应该尝试使用 PagerAdapter 而不是 FragmentPagerAdapter 。 FragmentPagerAdapter 是 PagerAdapter 的子类。给出了一个非常简单的示例 here

If so, how do I change the view state with just one fragment and one view?

您可以根据 instantiateItem() 中的位置更改 View 状态。

Also, it seems like a tabbed title bar is the only option with ViewPager, if I want to use arrows like such in the image, is there a way to insert those without having multiple tabs to scroll across.

你错了。如教程 here 所示,他们没有使用选项卡式标题栏。对于您的情况,我建议您在 Activity 中使用 2 个箭头进行导航,并根据您通过设置 OnPageChangeListener 获得 onPageSelected() 的位置来打开/关闭它们的可见性在 View 页面上。单击箭头时,只需使用以下代码更新 View 页面的位置

public void moveToNextPage(View view) {
    //it doesn't matter if you're already in the last item
    viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
}

public void moveToPreviousPage(View view) {
    //it doesn't matter if you're already in the first item
    viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
}

关于java - 使用 ViewPager 保留一个具有多个 View 的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26182290/

相关文章:

java - 设置 ByteBuffer 顺序(取决于缓冲区使用)是安全/良好的优化吗?

安卓工作室 : UnsupportedOperationException: Operation is not supported > for read-only collection

android - 在 Android 中通过 GoogleAuthUtil 从 Google Drive API 获取访问 token

Android 布局,按钮相互重叠

android - Sherlock 对话框 fragment 未在 Android v4+ 设备上显示

android - 如何在fragment中实现onclick listview?

java - 生成带有图像的 Excel 工作表

java - Netbeans Java 提示最终变量未被初始化

java - 跟踪 undefined variable

java - fragment 和文本转语音以及幻灯片菜单