java - 如何在viewPager中随机排列内容?

标签 java android

您好,我想知道如何打乱 viewPager 中 fragment 的顺序?这是我目前掌握的,请大家看一下!但它不起作用。顺便说一句,我的随机播放按钮位于操作栏中。

OnCreate方法:

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

适配器类:

私有(private)类 ScreenSlidePagerAdapter 扩展 FragmentStatePagerAdapter { 私有(private)列表 fragment ;

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

}

getFragments() 方法:

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;

}

}

最佳答案

只需将以下库添加到您的代码中,有关更多信息,请参阅示例代码。

View Pager Indicator

关于java - 如何在viewPager中随机排列内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18008122/

相关文章:

java - 在 Java 8 Stream 上执行操作时如何保留状态?

java - Spring 3.0返回的json字符串显示为问号(ResponseEntity)

android - 用户使用android上传图片时如何从保管箱获取共享链接?

java - 在 android 的 webView 中打开 Url

android - 为什么 ProgressBar 在 Android 中交换布局时停止动画?

Android:在其他 Activity 的 WebView 上加载 url

java - 无法chmod文件夹写入

java - 何时使用 Java 线程 API

java - AsyncTask下载的文件为0B

使用 picocli 解析 Java 程序选项在 Spinnaker Run Job 阶段不起作用