2016-05-16 3 views
0

Я хочу показать индикатор круга пейджера для своего приложения. View Pager отлично работает с указателем круга два, но я не могу добавить в него разные макеты, то есть прямо сейчас он просто меняет значения текста, когда пользователь перебирает экран. Скажите, пожалуйста, как реализовать макеты, так что я могу просматривать различные макеты, когда SWIP Вот мой код:View Pager circle Indicator с различными макетами

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

Пожалуйста, помогите!

+0

Ваш вопрос непонятен. Что не работает точно? Что ты пробовал? Обычно лучше указывать меньше кода и только те части, которые имеют значение. Хорошие вопросы обычно короткие или имеют сводку какого-то рода. –

+0

в этом методе initViews(), вы видите, что listOfItems.add в основном меняет текстовые значения на 1,2,3,4 и 5, но я хочу показать разные макеты при прохождении пользователем. –

ответ

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

работает сэр THankyou так много :) –

Смежные вопросы