2013-02-11 37 views

回答

4

尝试添加第一片段一次在队列的末尾,并在加载时,可使用viewPager.setCurrentItem(0,假)移动到第一个片段。

实际上,它并不总是有效。参照这个答案ViewPager as a circular queue/wrapping

我做了一个简单的例子看看:

public class MainActivity extends FragmentActivity { 

private static final int NUM_PAGES = 6; 
private ViewPager pager; 
private PagerAdapter pagerAdapter; 
private List<SlideFragment> slideList; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    slideList = new ArrayList<SlideFragment>(); 
    for (int i = 0; i<NUM_PAGES; i++){ 
     SlideFragment slide = new SlideFragment(); 
     slide.setIndex(i+1); 
     slideList.add(slide); 
    } 

    pager = (ViewPager) findViewById(R.id.pager); 
    pagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); 
    pager.setAdapter(pagerAdapter); 
} 

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 

    public ScreenSlidePagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     int _pos = position % NUM_PAGES; 
     return slideList.get(_pos); 
    } 

    @Override 
    public int getCount() { 
     return Integer.MAX_VALUE; 
    } 
} 
} 

而且Fragment类:

public class SlideFragment extends Fragment { 

private int index; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    ViewGroup root = (ViewGroup)inflater.inflate(R.layout.slide, container, false); 
    TextView tw = (TextView) root.findViewById(R.id.textView); 
    tw.setText(Integer.toString(index)); 
    return root; 
} 

public void setIndex(int index){ 
    this.index = index; 
} 
} 
+0

非常感谢这就是重量,我想。 – 2013-02-11 10:22:24

+0

添加到问题我有一个查询我想以循环的方式去1到6意味着我不想在一些循环后停下来。就像我在这里循环后,我不能再从1到6。 – 2013-02-11 11:16:12

+0

@Abhijit请参阅我的更正 – forcelain 2013-02-11 18:07:42