Java 如何在viewPager中洗牌内容?
您好,我想知道如何在viewPager中洗牌片段的顺序?这是我目前所拥有的,请看一看!但它不起作用。顺便说一句,我的shufflebutton在操作栏中 OnCreate方法:Java 如何在viewPager中洗牌内容?,java,android,Java,Android,您好,我想知道如何在viewPager中洗牌片段的顺序?这是我目前所拥有的,请看一看!但它不起作用。顺便说一句,我的shufflebutton在操作栏中 OnCreate方法: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.viewpager); SharedPrefere
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
mPager = (ViewPager) findViewById(R.id.pager);
fragments = getFragments();
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager(), fragments);
mPager.setAdapter(mPagerAdapter);
mPager.setOffscreenPageLimit(words.size() - 1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.flashcard, menu);
return true;
}
按“随机播放”时:
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.action_shuffle:
seed = System.currentTimeMillis();
Collections.shuffle(listOfWords, new Random(seed));
Collections.shuffle(fragments, new Random(seed));
mPagerAdapter.notifyDataSetChanged();
mPager.setAdapter(mPagerAdapter);
}
return true;
}
适配器类:
私有类ScreenSlidePagerAdapter扩展FragmentStatePagerAdapter{
私有列表片段
public ScreenSlidePagerAdapter(FragmentManager fragmentManager,
List<Fragment> fragments) {
super(fragmentManager);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return ScreenSlidePageFragment.newInstance(listOfWords.get(position).getId()-1);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
公共屏幕SlidePagerAdapter(碎片管理器碎片管理器,
列出片段){
超级(碎片管理器);
this.fragments=片段;
}
@凌驾
公共片段getItem(int位置){
返回ScreenSlidePageFragment.newInstance(listofWord.get(position.getId()-1);
}
@凌驾
public int getCount(){
返回fragments.size();
}
@凌驾
public int getItemPosition(对象){
返回位置\无;
}
}
getFragments()方法:
private List getFragments(){
ArrayList categoryList=新的ArrayList();
listOfWords=newarraylist();
listOfWords.clear();
如果(RedBoxSelection==true){
添加类别列表(1);
}
如果(YellowBoxSelection==true){
添加类别列表(2);
}
如果(GreenBoxSelection==true){
添加类别列表(3);
}
List flist=new ArrayList();
如果(flashcardsAllWordsSelection==true){
for(int i=0;i
}只需将以下库添加到代码中,有关更多信息,请参阅该库的示例代码
private List<Fragment> getFragments() {
ArrayList<Integer> categoryList = new ArrayList<Integer>();
listOfWords = new ArrayList<VocabWord>();
listOfWords.clear();
if (RedBoxSelection == true) {
categoryList.add(1);
}
if (YellowBoxSelection == true) {
categoryList.add(2);
}
if (GreenBoxSelection == true) {
categoryList.add(3);
}
List<Fragment> flist = new ArrayList<Fragment>();
if (flashcardsAllWordsSelection == true) {
for (int i = 0; i < words.size(); i++) {
flist.add(ScreenSlidePageFragment.newInstance(i));
listOfWords.add(words.get(i));
}
} else if (flashcardsAllWordsSelection ==false) {
for (int i = 0; i < words.size(); i++) {
for (int j = 0; j < categoryList.size(); j++) {
if (words.get(i).getCategory() == categoryList.get(j)) {
flist.add(ScreenSlidePageFragment.newInstance(i));
listOfWords.add(words.get(i));
}
}
}
}
return flist;
}