2017-06-29 10 views
0

私はいくつかのビューを持つ単純なビューページを持っています。 私は一度クリックすると、ビューの背景色をあらかじめ決められた色に変えなければならないボタンを各ビューに持っています。ViewPager "ViewGroup"は背景色のランタイムを変更します

public CustomPagerAdapter(Context context) { 
    mContext = context; 
} 

@Override 
public Object instantiateItem(ViewGroup collection, int position) { 
    LayoutInflater inflater = LayoutInflater.from(mContext); 
    ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.child_item, collection, false); 

    PopulateView(position); 
    collection.addView(layout); 
    return layout; 
} 

私は私のビューを描画し、ボタンを作成するの面倒を別の関数(populateView)を持っている:私は、次のしている私のinstantiateItemで

"ViewGroup layout"のインスタンスをクラス変数として保持して使用することを考えていましたが、ビュー1のボタンをクリックするとランダムなビュー(ビュー2)の背景色が変更されます。

だから私は「のViewGroupコレクション」のコピーを維持し、

collection.getChildAt(position).setBackgroundColor(mContext.getResources().getColor(sky)); 

を使用しますが、アプリケーションはエラー のjava.lang.NullPointerExceptionとの最後の表示色変化にクラッシュしていました:仮想メソッドを呼び出そうと "

collection = {[email protected]} "android.support.v4.view.ViewPager{e1f06a0 VFED..... ......ID 0,0-1080,1536 #7f0d0091 app:id/viewpager}" 
mContext = {[email protected]} 
position = 2 

nullオブジェクト参照に「android.view.View.setBackgroundColor(int)を無効に私は内部を見たときに奇妙なことがある 『コレクション』、および 『こども』を展開記載されている唯一の2人の子供があります。私はなぜこれがあるのか​​分からない。

誰かお手伝いできますか?

答えて

0

あなたは子供を追加する位置を与える必要があります。 See here

@Override 
public Object instantiateItem(ViewGroup collection, int position) { 

    ..... 


    collection.addView(layout, 0); 
    return layout; 
} 
関連する問題