- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要显示一个最初只显示一个 View 的 ViewPager。一旦此 View 通过测量和布局 channel ,根据这些结果,我可能需要更改适配器的内容。在这样做时,我遇到了这样一种情况,即 ViewPager 在尝试从某个位置滑动到下一个项目时不会跟随它的移动。
我确定我在我的适配器实现中做错了什么,但我不能指出问题所在。
为了演示,我创建了一个虚拟适配器来模拟我的实际项目中发生的情况。为了重现该问题,只需尝试一直滑动到位置 2(第 3 项),结果是您无法通过位置 1(第 2 项)。
谢谢!
public class CustomAdapter extends PagerAdapter {
int pages = 0;
@Override
public int getCount() {
return pages;
}
@Override
public boolean isViewFromObject(View view, Object o) {
return view == o;
}
public void setPages(int x) {
this.pages = x;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
TextView tv = new TextView(MainActivity.this);
ViewGroup.LayoutParams lp =
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setText("Position: " + position);
if (position == 0 && pages == 1) {
setPages(2);
notifyDataSetChanged();
}
if (position == 1 && pages == 2) {
setPages(3);
notifyDataSetChanged();
}
container.addView(tv);
return tv;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
Activity (onCreate 左右):
CustomAdapter adapter = new CustomAdapter();
adapter.setPages(1);
vp.setAdapter(adapter);
adapter.notifyDataSetChanged();
最佳答案
instantiateItem 项目方法是错误的地方。因为它只适用于一个 View ,所以它同时适用于 3 个 View 。
尝试移动
if (position == 0 && pages == 1) {
setPages(2);
notifyDataSetChanged();
}
if (position == 1 && pages == 2) {
setPages(3);
notifyDataSetChanged();
}
在 setPrimaryItem
方法
更新:
尝试在 setPrimaryItem
方法中为您想要的位置调用 instantiateItem
方法。你可以这样做,因为 instantiateItem
是一个 public
方法。但我不知道它是如何工作的,这是一个理论。试试吧。
关于android - 从 instantiateItem() 调用 notifyDataSetChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18958272/
我正在尝试使用 PageAdapter。我发现 public Object instantiateItem( View pager, int position ) 已被弃用。所以我正在尝试更新但遇到了
在 ViewPager 的 CustomPagerAdapter 中,在 instantiateItem() 方法中,我尝试创建一个 TextView,然后根据特定条件为每个页面设置不同的文本。从页面
我是 android 编程的初学者。我正在使用按钮 onclick 使用下面的代码将新页面添加到 viewpager。但是,在滑动 Activity 中实例化项目时,viewpager 返回错误的位置
我试图找出一个 View 的绝对位置,但到目前为止它似乎更像是一个通过的相对位置,但话又说回来,有时它似乎也是基于纯粹的随机性? 看看我的 ViewPager 的这个输出,在 5 个 View 之间来
我正在尝试在我的应用程序中使用 PagerAdapter 实现 ViewPager。我主要工作 this example . 我的 PagerAdapter 称为 DataPagerAdapter 并
我想在 ViewPager 的 fragment 中设置一些 TextView。我在实例化页面时在我的 fragment 的 onActivityCreated 函数中设置我的 TextViews 。
我需要显示一个最初只显示一个 View 的 ViewPager。一旦此 View 通过测量和布局 channel ,根据这些结果,我可能需要更改适配器的内容。在这样做时,我遇到了这样一种情况,即 Vi
我试着让我的 FragmentPagerAdapter 工作,但是这些例子对于现实生活来说有点简单: @Override public Object instantiateItem(final Vie
我很好奇为什么 instantiateItem 被弃用,取而代之的是它的新版本。变化在于它现在接收 ViewGroup 而不是更通用的 View。 弃用的方法 public Object instan
我尝试使用滑动图像制作简单的应用程序。我用这篇文章http://www.androidbegin.com/tutorial/android-viewpager-gallery-images-and-t
我有 pagerAdapter 可以通过在 viewpager 中滑动来快速显示图像。我想在每个 viewpager 项目下方加载 gridview 图像。为了避免在快速滑动时加载所有 gridvie
我想使用 ViewPager 来显示一些加密的图像。为此,我创建了 PagerAdapter 的扩展,并将我的解密代码放在 instantiateItem 方法中。但问题是解密过程耗时过长。因此,我在
我的 logcat 在打印中第一次在重复此方法后占据位置 0 并占据位置 1,我不需要重复此方法。 public Object instantiateItem(ViewGroup container
我是 viewpager 的新手,我想使用 viewpager 创建 View ,这里所有的东西都是动态的,所以我按照这种方式进行,我的问题是 instantiateItem() 在创建时被调用了两次
当我切换到 viewPager2 时,我必须实现另一种类型的适配器(我使用 FragmentPagerAdapter,现在我使用 FragmentStateAdapter),现在我想调用具有旧适配器但
我有一个 ViewPager,其中每个页面显示使用 UniversalImageLoader 和图像 URL 加载全屏图像。 我正在使用 viewPager.setCurrentItem(n, fal
我想达到什么目的? 我有 5 张图片的 url 链接。我希望它们以幻灯片的形式显示在我的主屏幕上。 我知道该怎么做吗? 据我所知,是的。我能够在主屏幕内以自动幻灯片的形式显示 5 张图像 那问题是什么
我使用 ViewPager 创建向左滑动的 fragment ,现在我想将 fragment 插入每个 fragment 页面。 activityMain.xml 还有这个:
所以基本上我想为每个 View 位置使用单独的 XML 布局填充 ViewPager 中的页面。我目前正在通过 @Override public Object instantiateItem(
我对 FragmentPagerAdapter 有问题,我通过 FragmentPagerAdapter 在 viewpager 中设置了 fragment ,我必须动态显示 viewpager,
我是一名优秀的程序员,十分优秀!