当前位置: 首页 > 面试题库 >

双向无限/动态ViewPager

慕迪
2023-03-14
问题内容

有一个使用-情况ViewPager我从来没见过漂亮的实现。

ViewPager是或多或少的静态结构。将Pages添加到右侧(添加到Model并显示它)并不难,但是,应该有一个很好用的解决方案来扩展PagerAdapter(或其某些子类),以便它可以双向扩展。

我可以想象这样的适配器接口

boolean isEmpty()
boolean hasNext()
boolean hasPrevious()
Object  getNext()
Object  getPrevious()
Object  getItem(int position)

// or if using generics
T       getNext()
T       getPrevious()
T       getItem(int position)

与Collections Iterator相似,但是是双向的。

其中索引/位置不限于0以下,而是可以使用Integer类型的整个范围。
可能不是基于数组的实现(从0到无穷大)。

我发现了这个“hack”:动态地向viewpager添加视图和从视图中删除视图,
但是正如我之前所说,我试图使其自然运行,而不是维持3,5,…项,并强制ViewPager更改当前位置在一些扭曲的逻辑

当前是否有足够的实施方案或有必要实施?
如果这是全新的实施方式,我愿意悬赏悬赏。


问题答案:

这会有所帮助吗?

public static class MyAdapter extends FragmentPagerAdapter {
    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

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

    @Override
    public Fragment getItem(int position) {
        return getFragmentBasedOnPosition(position);
    }

    private Fragment getFragmentBasedOnPosition(int position) {
        int fragmentPos = position % 3; // Assuming you have 3 fragments
        switch(fragmentPos) {
            case 1:
            return Fragment1.newInstance();
            case 2:
            return Fragment2.newInstance();
            case 3:
            return Fragment3.newInstance();
        }
    }
}

然后,

mPager.setCurrentItem((int)(Integer.MAX_VALUE/2)); //假设mPager是您的ViewPager



 类似资料:
  • 有一个的用例,我从未见过它的实现。 或多或少是静态结构。将页面添加到右侧(附加到模型并显示它)并不难,但是,应该有一个好用的解决方案来扩展PagerAdapter(或它的一些子类),这样它就可以双向扩展。 我可以想象适配器的接口是这样的 类似于集合迭代器,但都是定向的。 其中索引/位置不受0的限制,但可以使用整型的整个范围 实现可能不基于数组(从0到无限)。 我发现了这个“黑客”:动态地向view

  • 问题内容: 我们的应用程序使用无限滚动来浏览大量异构项目列表。有一些皱纹: 对于我们的用户来说,通常有10,000个项目的列表,并且需要滚动3k +。 这些都是丰富的项目,因此在浏览器性能变得无法接受之前,我们只能在DOM中拥有几百个。 这些物品的高度各不相同。 这些项目可能包含图像,我们允许用户跳转到特定日期。这很棘手,因为用户可以跳到列表中需要在视口上方加载图像的位置,这会在加载时将内容下推。

  • 首先,这是我的实体。 玩家: 团队: 正如已经说明的许多主题一样,您可以通过Jackson以多种方式避免WebService中的StackOverflow Exeption。 这很酷,除了JPA之外,在序列化之前,所有的实体都可以无限递归地构造另一个实体。这只是丑陋的ans请求需要更长的时间。检查这个截图:IntelliJ调试器 有办法解决吗?知道我希望根据endpoint获得不同的结果。示例:

  • 我正在尝试使用SpringBoot和SpringDataJPA创建一对多的双向映射。请查看下面的实体 雇主实体 员工实体 雇主回购 雇员回购 REST控制器是 它看起来像一个内讧循环,我的服务器抛出错误getOutputStream()已被调用用于此响应。 注释,但问题是它的工作方式像一个对许多 如果我想和雇主达成多对一的共识。输出是 它没有向我显示雇主的详细信息。 请告诉我我做错了什么。提前谢谢

  • 可以水平和垂直两个方向翻页滚动的ScrollView,用的是atpagingview。 [Code4App.com]

  • 基于上面的代码--我能期望发生什么?我在运行时会因为Horse没有实现add(Animal)而失败吗?在上述性质的调用中,被比较的值的编译时类型是动物的(至少,正如所写的那样),但它们的运行时类型更具体,它能准确地区分它们吗?如果我们使用var而不是val,这有什么改变吗? 提前道谢。 编辑:修改的核心代码--我看到了第一个响应者强调的问题,我没有正确地思考。显然,我还没有真正编译这个,我仍然是在