2012-02-21 62 views
5

的伯爵你如何解开点击前一页上的一个按钮后,滑动到一个新的页面的能力吗?更改ViewPager

目前,我有一个PagerAdapter。下面的代码实例化该项目。在getCount()中,返回值3,从而制作3张幻灯片。我想知道是否有办法只有3个视图,但点击一个按钮后,解锁第四个视图,你现在可以滑动到?

@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()”,然后将其放置在// *一些代码* //增加幻灯片的数量?

会增加

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)集合).addView(V1,3);在点击监听器中,但它没有奏效。你可以给出更多的建议如何做到这一点? – 2012-02-21 01:49:55

+0

你做一个'notifyDatasetChanged()' – 2012-02-21 02:05:05

+0

我试过,但它崩溃。我会做((ViewPager)集合).notifyDatasetChanged()全部在点击监听器中。也是它添加或addview和这些方法属于哪个对象,集合的? – 2012-02-21 02:19:35