gpt4 book ai didi

java - 使用多个 ViewPager 制作 Activity

转载 作者:太空宇宙 更新时间:2023-11-04 11:14:54 24 4
gpt4 key购买 nike

我试图创建一个 Activity,其中包含几个添加到 ScrollView 内的 LinearLayout 的 View。这些 View 是用 LayoutInflater 膨胀的布局文件,它们包含 TextView 和 ViewPager(使用 FragmentPagerAdapter)。问题是只有第一个 ViewPager 显示 fragment ,而其他 ViewPager 只是空的。

MainActivity.class:

public class MainActivity extends AppCompatActivity {

ViewPager viewPager;
LinearLayout linearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

linearLayout = (LinearLayout)findViewById(R.id.layout);

for(int i = 0;i<10;i++) {

PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
pagerAdapter.addFragment(new FragmentRed());
pagerAdapter.addFragment(new FragmentYellow());
pagerAdapter.addFragment(new FragmentGreen());

View view = getLayoutInflater().inflate(R.layout.test_item, null);

ViewPager viewPager = (ViewPager) view.findViewById(R.id.view_pager);
viewPager.setAdapter(pagerAdapter);

TextView textView = (TextView)view.findViewById(R.id.text_view);
textView.setText("SampleText " + i);

linearLayout.addView(view);
}

private class PagerAdapter extends FragmentPagerAdapter{
ArrayList<Fragment>fragments = new ArrayList<>();

public void addFragment(Fragment fragment){
fragments.add(fragment);
}

public PagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
return fragments.get(position);
}

@Override
public int getCount() {
return fragments.size();
}
}

这就是我在模拟器中得到的: /image/SKFYM.jpg

第一个 ViewPager 工作正常,我需要让其他人也这样做。

test_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"></TextView>

<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="100dp"></android.support.v4.view.ViewPager>>
</LinearLayout>

最佳答案

这很难解释,但我会尽力。

数组列表的工作方式与 int、String、bools... 的工作方式不同。如果您声明数组列表的方式与声明它指向相同 fragment 的方式相同。ArrayList 可以包含对同一对象的多个引用。

我认为您只需通过以下方式即可解决问题:

for(int i = 0;i<10;i++) {

PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
pagerAdapter.addFragment(new FragmentRed());
pagerAdapter.addFragment(new FragmentYellow());
pagerAdapter.addFragment(new FragmentGreen());

View view = getLayoutInflater().inflate(R.layout.test_item, null);

ViewPager viewPager = (ViewPager) view.findViewById(R.id.view_pager);
viewPager.setAdapter(pagerAdapter);

TextView textView = (TextView)view.findViewById(R.id.text_view);
textView.setText("SampleText " + i);

linearLayout.addView(view);
}

关于java - 使用多个 ViewPager 制作 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45574638/

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