2012-02-21 4 views
5

Как вы можете разблокировать возможность перехода на новую страницу после нажатия кнопки на предыдущей странице?Изменение количества ViewPager

В настоящее время у меня есть PagerAdapter. Код ниже создает экземпляр элемента. В getCount() возвращается значение 3 и, таким образом, создаются 3 слайда. Мне было интересно, есть ли способ иметь только 3 вида, но после нажатия кнопки откройте 4-й вид, к которому вы теперь можете перейти?

@Override 
    public Object instantiateItem(final View collection, int position) { 
     final LayoutInflater inflater = (LayoutInflater) TViewPager.this 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     TextView tv = new TextView(TViewPager.this); 

//Describe the separate layouts of views 
switch (position) { 
     case 1: 
      View v1 = inflater.inflate(R.layout.expander2, null, false); 
       ((ViewPager) collection).addView(v1, 0); 
       final Button button = (Button) findViewById(R.id.button_click_me); 
       button.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v1) { 
         Toast.makeText(getBaseContext(), "+1", Toast.LENGTH_LONG).show(); 
         //*Some code*// 

        } 
       }); 
       return v1; 

Есть ли способ изменить:

public int getCount() { 
     return 3; 
    } 

Как «setCount()», а затем поместить его в // * // * некоторый код, чтобы увеличить количество слайдов?

Would добавления

instantiateItem(collection,4); 

работа где-то работать?

Спасибо,

ответ

6

Вот как я решил эту проблему. Чтобы уточнить, как вы нажимаете кнопку и получаете больше страниц, на которые вы можете прокручивать. Я сделал:

private int NUM_VIEWS = 2; 

public void setN(int N) { 
    this.NUM_VIEWS = N; 
} 

, а затем я изменил важную линию.

@Override 
public int getCount() { 
    return NUM_VIEWS; 
} 

Мой clickListener является

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v1) { 
     myAdapter.setN(3); 
     myPager.setCurrentItem(2); 
     } 
}); 

Я добавил еще один случай, чтобы облегчить новый элемент. Впоследствии, когда я нажимаю кнопку, мой pageadapter будет расширяться до 3 представлений вместо 2, и новый случай будет новым представлением.

2

getCount по умолчанию возвращает количество просмотров вашего ребенка ViewPager. Делая pager.add(layout_item), вы можете добавить новый элемент в пейджер (конечно, сначала вам нужно его раздуть). getCount будет автоматически настраиваться.

+0

поэтому я попытался добавить: ((ViewPager) collection) .addView (v1, 3); в клиенте, но он не работал. Можете ли вы дать немного больше советов о том, как это сделать? –

+0

Вы делали 'notifyDatasetChanged()' –

+0

Я пробовал, но он сбой. я бы сделал ((ViewPager) collection) .notifyDatasetChanged() все внутри прослушивателя кликов. Кроме того, это add или addview и на каком объекте эти методы принадлежат, коллекция? –