更改ViewPager的计数

时间:2012-02-21 01:36:57

标签: android android-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);
在某处工作?

谢谢,

2 个答案:

答案 0 :(得分: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个,新的视图将是新视图。

答案 1 :(得分:2)

默认情况下,

getCount会返回ViewPager的子视图数。通过执行pager.add(layout_item),您可以向寻呼机添加新项目(当然,您必须先将其充气到某处)。 getCount会自动调整。