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

: 그리고 당신은 PagerAdapterinstantiateItem() 방법을 수정하고 각보기를 구성 동적 아니라 단순히 TextView 각을 추가하는 것보다해야 할

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

내 코드입니다 시각. 당신은 이미 코드가

@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); 
} 
관련 문제