2012-02-21 9 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; 

変更する方法はあります:「setCount()」のように

public int getCount() { 
     return 3; 
    } 

、その後、スライドの量を増やすために// * // *いくつかのコードでそれを置きますか?

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が2ではなく3つのビューに展開され、新しいケースが新しいビューになります。

2

getCountデフォルトでは、あなたのViewPagerの子ビューの数を返します。 pager.add(layout_item)を実行することで、ページャに新しい項目を追加することができます(もちろん、最初にどこかを膨張させる必要があります)。 getCountが自動的に調整されます。

+0

私は((ViewPager)コレクション)を追加しようとしました。.addView(v1、3);クリックリスナー内では動作しませんでした。あなたはこれを行う方法についてもう少しアドバイスをいただけますか? –

+0

'notifyDatasetChanged()'を実行しました –

+0

試しましたが、クラッシュしました。クリックリスナー内で((ViewPager)コレクション).notifyDatasetChanged()を実行しますか?また、それはaddかaddviewであり、どのオブジェクトにこれらのメソッドが属しているのですか、コレクションですか? –

関連する問題