2011-10-26 8 views
1

ビューページで異なるビューを使用するにはどうすればよいですか?私はそれを把握できません。ビューページで他のビューを使用する

たとえば、リストボックスのあるビューとボタンを含むビュー。

これは私のコードです:

は、どのように私はviewpagesに異なるビューを使用することができますか?私はそれを把握できません。

たとえば、リストボックスのあるビューとボタンを含むビュー。

これは私のコードです:

package com.stylingandroid.viewpager; 

import com.viewpagerindicator.TitlePageIndicator; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 

public class ViewPagerActivity extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ViewPagerAdapter adapter = new ViewPagerAdapter(this); 
     ViewPager pager = (ViewPager) findViewById(R.id.viewpager); 
     TitlePageIndicator indicator = (TitlePageIndicator) findViewById(R.id.indicator); 
     pager.setAdapter(adapter); 
     indicator.setViewPager(pager); 
    } 
} 

そして、ここでアダプタ:

package com.stylingandroid.viewpager; 

import android.content.Context; 
import android.os.Parcelable; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.View; 
import android.widget.TextView; 

import com.viewpagerindicator.TitleProvider; 

public class ViewPagerAdapter extends PagerAdapter 
    implements TitleProvider 
{ 
    private static String[] titles = new String[] 
    { 
     "Page 1", 
     "Page 2", 
     "Page 3" 
    }; 
    private final Context context; 

    public ViewPagerAdapter(Context context) 
    { 
     this.context = context; 
    } 

    @Override 
    public String getTitle(int position) 
    { 
     return titles[ position ]; 
    } 

    @Override 
    public int getCount() 
    { 
     return titles.length; 
    } 

    @Override 
    public Object instantiateItem(View pager, int position) 
    { 
     TextView v = new TextView(context); 
     v.setText(titles[position]); 

     ((ViewPager)pager).addView(v,0); 

     return v; 
    } 

    @Override 
    public void destroyItem(View pager, int position, Object view) 
    { 
     ((ViewPager)pager).removeView((TextView)view); 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) 
    { 
     return view.equals(object); 
    } 

    @Override 
    public void finishUpdate(View view) {} 

    @Override 
    public void restoreState(Parcelable p, ClassLoader c) {} 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 

    @Override 
    public void startUpdate(View view) {} 
} 

答えて

1

あなたはPagerAdapterinstantiateItem()方法を変更し、動的に各ビューを構築する必要があるのではなく、単にTextViewそれぞれを追加します時間。あなたは既にコードを持って

@Override 
public Object instantiateItem(View pager, int position) 
{ 
    LayoutInflator inflator = LayoutInflator.from(context); 
    View v = null; 
    switch(position) 
    { 
     case 0: 
      v = inflator.inflate(R.layout.layout1, (ViewPager)pager, false); 
      break; 
     case 1: 
      v = inflator.inflate(R.layout.layout2, (ViewPager)pager, false); 
      break; 
     . 
     . 
     . 
    } 
    v.setText(titles[position]); 

    ((ViewPager)pager).addView(v,0); 

    return v; 
} 
0

が、私はあなたが膨らましようとしている場合、これはそこにする必要があることを指摘したかった:あなたは、例えば、位置ごとに異なるレイアウトを膨らませることができます。

@Override 
public boolean isViewFromObject(View view, Object object) 
{ 
    return view.equals(object); 
} 
関連する問題