2011-09-13 36 views
55

Tôi đang sử dụng mã sau, MAX là 2 trang. Theo mặc định, vị trí là 0 và thêm một trang mới ở bên phải. Tôi thổi phồng hai tệp bố cục.Đặt trang mặc định cho ViewPager trong Android

Làm cách nào để hiển thị trang1 khi ứng dụng bắt đầu và thêm trang mới ở bên trái? Cảm ơn.

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 


    <android.support.v4.view.ViewPager 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:id="@+id/pagerView" /> 


</LinearLayout> 

mã Java

public class MyPagerActivity extends Activity { 
    private Context context;  
    private int pageNumber; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     context = this; 

     ViewPager pagerView = (ViewPager)findViewById(R.id.pagerView); 
     pagerView.setAdapter(new AwesomePagerAdapter());  

    } 


    private class AwesomePagerAdapter extends PagerAdapter{ 

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

     @Override 
     public void finishUpdate(View arg0) { 
      //setPageTitles(getPageNumber()); 
     } 

     @Override 
     public int getCount() { 
      return 2; 
     } 

     @Override 
     public Object instantiateItem(View collection, int position) { 
      /* TextView tv = new TextView(MyPagerActivity.this); 
     tv.setText("Bonjour PAUG " + position); 
     tv.setTextColor(Color.WHITE); 
     tv.setTextSize(30); 

     ((ViewPager) collection).addView(tv,0); 

     return tv;*/ 

      View view = getViewToShow(position); 
      ((ViewPager) collection).addView(view,0); 
      return view; 
     } 

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

     @Override 
     public void restoreState(Parcelable arg0, ClassLoader arg1) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public Parcelable saveState() { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public void startUpdate(View arg0) { 
      // TODO Auto-generated method stub 

     } 

    } 


    private View getViewToShow(int position){ 
     View view = null; 
     View layout; 
     LayoutInflater mInflater = (LayoutInflater) 
     context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     switch(position){ 

     case 0: 
      layout = mInflater.inflate(R.layout.elements, null); 
      view = layout; 
      break; 
     case 1: view = 
      layout = mInflater.inflate(R.layout.elements2, null); 
     view = layout; 

     break; 
     } 
     return view; 
    } 

} 

Trả lời

115

Bạn đã cố gắng sử dụng các phương pháp setCurrentItem?

+0

Điều đó có hiệu quả. Cảm ơn. – dcanh121

-1

Giải pháp này cung cấp khả năng đặt trang mặc định mà không có sự can thiệp từ bên ngoài lớp bộ điều hợp Pager.

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    View currentPage = null; 
    switch(position){ 
     case 0: 
      currentPage = LayoutInflater.from(context).inflate(R.layout.page0, null)  
      break; 
     case 1: 
      currentPage = LayoutInflater.from(context).inflate(R.layout.page1, null)  
      ///////////// This page will be default //////////////////// 
      ((ViewPager)container).setCurrentItem(position); 
      //////////////////////////////////////////////////////////// 
      break; 
     case 2: 
      currentPage = LayoutInflater.from(context).inflate(R.layout.page2, null)  
      break; 
    return currentPage; 
} 
37

Giải pháp được chấp nhận là tốt, nhưng điều quan trọng là phải gọi phương thức này sau khi thiết lập bộ điều hợp.

viewPager.setAdapter(adapterViewPager); 
    viewPager.setCurrentItem(1); 
4

Theo mặc định, bạn phải đặt giá trị hiện tại 1 để chỉ hiển thị một chế độ xem mặc định. Nếu bạn không đặt setCurrentItem thành 1, bạn không thể thấy bất cứ điều gì.

viewPager.setAdapter(adapterViewPager); 
viewPager.setCurrentItem(1) 
Các vấn đề liên quan