2011-10-26 64 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); 
}