2016-05-16 5 views
0

私のアプリケーションのビューページャサークルインジケータを作成したいと思います。 View Pagerはサークルインジケータ2で完全に動作していますが、別のレイアウトを追加することはできません。つまり、ユーザーが画面をスワイプするときにテキストビューの値を変更するだけです。ページャサークルを表示するレイアウトが異なるインジケータ

public class MainActivity extends Activity { 

private ViewPager viewPager; 
private MyViewPagerAdapter myViewPagerAdapter; 
private ArrayList<Integer> listOfItems; 

private LinearLayout dotsLayout; 
private int dotsCount; 
private TextView[] dots; 

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

    initViews(); 
    setViewPagerItemsWithAdapter(); 
    setUiPageViewController(); 
} 

private void setUiPageViewController() { 
    dotsLayout = (LinearLayout)findViewById(R.id.viewPagerCountDots); 
    dotsCount = myViewPagerAdapter.getCount(); 
    dots = new TextView[dotsCount]; 

    for (int i = 0; i < dotsCount; i++) { 
     dots[i] = new TextView(this); 
     dots[i].setText(Html.fromHtml("&#8226;")); 
     dots[i].setTextSize(30); 
     dots[i].setTextColor(getResources().getColor(android.R.color.darker_gray)); 
     dotsLayout.addView(dots[i]);    
    } 

    dots[0].setTextColor(getResources().getColor(android.R.color.white)); 
} 

private void setViewPagerItemsWithAdapter() { 
    myViewPagerAdapter = new MyViewPagerAdapter(listOfItems); 
    viewPager.setAdapter(myViewPagerAdapter); 
    viewPager.setCurrentItem(0); 
    viewPager.setOnPageChangeListener(viewPagerPageChangeListener); 
} 

// page change listener 
OnPageChangeListener viewPagerPageChangeListener = new OnPageChangeListener() { 

    @Override 
    public void onPageSelected(int position) { 
     for (int i = 0; i < dotsCount; i++) { 
      dots[i].setTextColor(getResources().getColor(android.R.color.darker_gray)); 
     } 
     dots[position].setTextColor(getResources().getColor(android.R.color.white)); 
    } 

    @Override 
    public void onPageScrolled(int arg0, float arg1, int arg2) { 

    } 

    @Override 
    public void onPageScrollStateChanged(int arg0) { 

    } 
}; 

private void initViews() { 

    getActionBar().hide(); 

    viewPager = (ViewPager)findViewById(R.id.viewPager); 

    listOfItems = new ArrayList<Integer>(); 
    listOfItems.add(1); 
    listOfItems.add(2); 
    listOfItems.add(3); 
    listOfItems.add(4); 
    listOfItems.add(5); 
} 

// adapter 
public class MyViewPagerAdapter extends PagerAdapter{ 

    private LayoutInflater layoutInflater; 
    private ArrayList<Integer> items; 

    public MyViewPagerAdapter(ArrayList<Integer> listOfItems) { 
     this.items = listOfItems; 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = layoutInflater.inflate(R.layout.view_pager_item, container,false); 

     TextView tView = (TextView)view.findViewById(R.id.PageNumber); 

     tView.setText(listOfItems.get(position).toString()); 

     ((ViewPager) container).addView(view); 

     return view; 
    } 

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

    @Override 
    public boolean isViewFromObject(View view, Object obj) { 
     return view == ((View)obj); 
    } 


    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     View view = (View)object; 
     ((ViewPager) container).removeView(view); 
    } 
} 

が助けてください:SWIP はここに私のコードであるとき、私は異なるレイアウトを表示できるようにレイアウトを実装する方法を教えてください!

+0

あなたの質問は不明です。何が正確に動作しないのですか?あなたは何を試しましたか?一般に、コードを少なくし、関連する部分だけを置く方が良いです。良い質問は、通常、短いか、何らかの種類の要約があります。このメソッドのinitViews()の –

+0

では、基本的に1,2,3,4,5のテキスト値を変更するlistOfItems.addが表示されますが、ユーザーがスワップしたときに別のレイアウトを表示したいと考えています。 –

答えて

1

これはすべてinstantiateItem()です。ちょうどそのページのために必要なビューを膨らませて記入してください。

@Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view; 
     switch (position) { 
     case 0: // page 1 
      view = layoutInflater.inflate(R.layout.page1, container,false); 
      // TODO set up your page 1 views 
      break; 
     case 1: // page 2 
      view = layoutInflater.inflate(R.layout.page2, container,false); 
      // TODO set up your page 2 views 
      break; 
     case 2: // page 3 
      view = layoutInflater.inflate(R.layout.page3, container,false); 
      // TODO set up your page 3 views 
      break; 
     // etc. etc. etc. 
     } 

     ((ViewPager) container).addView(view); 

     return view; 
    } 
+0

それはサーキューなんてそんなに:) –

関連する問題