2011-09-13 20 views
55

मैं निम्नलिखित कोड का उपयोग कर रहा हूं, MAX 2 पृष्ठ है। डिफ़ॉल्ट रूप से स्थिति 0 है और दाईं ओर एक नया पृष्ठ जोड़ती है। मैं दो लेआउट फाइलों को फुलाता हूं।Android में ViewPager के लिए डिफ़ॉल्ट पृष्ठ सेट करें

ऐप शुरू होने पर पृष्ठ 1 को कैसे दिखाया जा सकता है और बाईं ओर एक नया पृष्ठ जोड़ सकता है? धन्यवाद।

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> 

जावा कोड

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; 
    } 

} 

उत्तर

115

आप setCurrentItem विधि का उपयोग करने की कोशिश की है?

+0

यह काम करता है। धन्यवाद। – dcanh121

-1

यह समाधान पेजर एडाप्टर क्लास के बाहर से हस्तक्षेप किए बिना डिफ़ॉल्ट पृष्ठ सेट करने की क्षमता देता है।

@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

स्वीकृत समाधान ठीक है, लेकिन एडाप्टर सेट करने के बाद इस विधि को कॉल करना महत्वपूर्ण है।

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

डिफ़ॉल्ट रूप से, आपको केवल एक डिफ़ॉल्ट दृश्य दिखाने के लिए वर्तमान मान 1 सेट करना होगा। यदि आप setCurrentItem से 1 सेट नहीं करते हैं, तो आप कुछ भी नहीं देख सकते हैं।

viewPager.setAdapter(adapterViewPager); 
viewPager.setCurrentItem(1) 
संबंधित मुद्दे