gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:25:54 25 4
gpt4 key购买 nike

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

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com