2017-08-08 7 views
1

私は、LayoutInflaterで膨らませられたレイアウトファイルで、TextViewとViewPager(FragmentPagerAdapterを使用する)を含んでいる、いくつかのViewがLineViewLayoutにScrollViewに追加されたアクティビティを作成しようとしています。最初のViewPagerはフラグメントを表示し、他のViewPagerはただ空です。複数のViewPagersでアクティビティを作成

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

そして、これは私はエミュレータで得るものです: https://i.stack.imgur.com/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> 

答えて

0

それは説明するのは難しいですが、私は自分のベストを尽くします。

配列リストは、int、String、bool ... workと同じように機能しません。配列リストを宣言すると、宣言の方法で同じフラグメントを指し示します。 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); 
    } 
+0

感謝を。私はあなたが示唆したようにコードを編集しましたが、私はまだ同じ問題を抱えています; 1つのviewPagerだけにフラグメントがあります。 –

関連する問題