- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想始终保留 3 个 View 的列表。该应用程序从位置 1 开始(在位置 0、1、2 之外)。当有人滚动到位置 0 时,我想删除 View 2,并在位置 0 之前创建一个 View 。这样,在用户看来, View 是无限的。同样,当有人滚动到位置 2 时,我想删除位置 0 的 View 并在末尾添加一个。
但是我在添加和删除 View 时遇到了问题。当我到达位置 0 时,没有任何变化,除非我尝试滚动到位置 0(到位置 -1,即边界被击中)。那时,我可以看到它是我的 View 的边界,但是 setCurrentItem(1,false)
被触发,我又回到了 View 的中间。当我滚动到位置 2 时,我看到位置 2 已更新。但是位置 0 和 1 保持不变。
当我滚动到位置 2 时,没有任何反应。但是,如果我尝试滚动到边界,出于某种原因,位置 0 会更新并触发 setCurrentItem(1,false)
。
我不知道为什么会这样。任何人都可以阐明这一点吗?
这是我的代码:
public class MainActivity extends Activity {
ArrayList<Integer> showThree = new ArrayList<Integer>();
int focusedPage = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showThree.add(0,5); //adding integers 5,6,7 for positions 0,1,2
showThree.add(1,6);
showThree.add(2,7);
final MyPagerAdapter adapter = new MyPagerAdapter(getApplicationContext(),showThree);
final ViewPager myPager = (ViewPager) findViewById(R.id.mypanelpager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(1);
myPager.setOnPageChangeListener(new OnPageChangeListener(){
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
//when position= 0, change the 3 views from 5,6,7 to 4,5,6.
if (focusedPage == 0) {
showThreeMonths.set(0,4);
showThreeMonths.set(1,5);
showThreeMonths.set(2,6);
adapter.notifyDataSetChanged();
adapter.startUpdate(myPager);
}
else if (focusedPage ==2){
//ignore, just testing focusPage=0 for now }
}
//set current page to the middle of the 3 new views, which would be
//the same view at position 0 of the old 3 views.
//Thus user doesn't experience the views changing despite being 3 new views.
myPager.setCurrentItem(1,false);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int position) {
focusedPage = position;
}
});
}
寻呼机适配器
public class MyPagerAdapter extends PagerAdapter {
private ArrayList<Integer> showThreeMonths;
private Context ctx;
public MyPagerAdapter (Context ctx, ArrayList<Integer> showThree){
this.ctx = ctx ;
this.showThree = showThree;
}
@Override
public int getCount() {
return showThree.size();
}
public Object instantiateItem(ViewGroup collection, int position ){
//NewCustomView is a class I made that takes parameters context and an integer and creates a view based on the integer
NewCustomView MyOwnView = new NewCustomView(ctx, showThree.get(position));
View customViewLayout = MyOwnView.newLayout; //part of the class object
collection.addView(customViewLayout);
return customViewLayout;
}
@Override
public void destroyItem(ViewGroup collection, int position, Object arg2) {
((ViewPager) collection).removeView((ViewGroup) arg2);}
@Override
public Parcelable saveState() {
return null;}
@Override
public boolean isViewFromObject(View view, Object arg1) {
return view==arg1;}
@Override
public void startUpdate(ViewGroup collection) {}
@Override
public void finishUpdate(ViewGroup collection) {}
}
最佳答案
instantiateItem()方法默认在内存中创建2个 View 页面。因此,当您滑动到第二页时,将重新创建 0 页,因为它超出了内存中保存的 2 页的范围。请尝试使用
myViewPager.setOffscreenPageLimit(numberOfPages)
接收一个整数作为参数并声明在回收它们之前应该保留多少页的方法。
关于android - 添加/删除 PagerAdapter/ViewPager 问题 Android 的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12505725/
我的 Activity 中有一个 ViewPager。 ViewPager 在滑动寻呼机时显示不同的值。但是我得到一个 IllegalStateException: PagerAdapter chan
我正在使用带有 ActionBar 选项卡的 ViewPager 示例,该标签取自 Android 文档 here . 不幸的是,当我调用 addTab 方法时,应用程序崩溃并出现以下异常: Ille
我正在构建一个简单的图库应用。图片与服务器同步。现在我有一个简单的 gridView 显示图像,onClick 图像在 viewPager 中打开。就像 android 默认图库一样。 问题是- ja
我正在尝试使用静态类将值传递给 View ,而不是使用 intent,因为我必须传递大量数据。有时我会得到这个错误,但找不到主要原因是什么 错误:- java.lang.IllegalStateExc
我正在为我的应用程序使用 UniversalImageLoader。我的 ImageAdapter 扩展了 PagerAdapter。我需要 currentImage 作为位图。通过回调方法 publ
我有一个 ViewPager 和一个 PagerAdapter,它从远程服务器(通过它们的 ID)下载一些图像并显示它们。它几乎完美地工作,除了从第一页滑动到第二页时有点慢(比如 1 秒),而之后的所
我做了一个 PagerAdapter,它工作得很好,但是当我 Handlebars 机水平放置时,很多像 TextView 这样的东西是不可见的,因为它们在“下方”手机屏幕。我知道我可以放一个 Scr
我正在尝试制作一个图像寻呼机,看起来我已经根据我查阅的所有教程做对了,但我得到的只是一个空白屏幕。适配器的 instantiateItem 方法上的断点告诉我它正在被调用并且所有正确的信息都被设置到
我尝试从 firebase 数据库加载数据库并得到这个异常。它是关于 notifyDataSetChanged 的。我试图在 SlideShowAapter 中放入 getCount() 但它没有用。
我想弄清楚,下面的事情是如何用 android UI 完成的。我不认为我是第一个遇到这个问题的人,但我不知道要搜索什么,也没有找到任何有用的信息。 我的情况: 目前我有一个扩展 FragmentSta
我正在开发一个包含 ViewPager View 的应用程序, 我创建了一个 PagerAdapter,它具有 View ,PagerAdapter 的 instantiateItem() 方法在 c
我正在尝试开发一个应用程序,它将显示数字 1-10 以及该数字的声音。 使用 mobile.tutsplus 中的示例进行水平滑动,我已经达到了所有数字都正确显示但是当我们从 2 返回时 1 的声音不
我想获取我的 PagerAdapter 可见 View 的当前位置 我没有看到像 getPosition() 这样明显的函数,我想要一个。 我想在那个位置将一个对象添加到它的数组列表中,但我需要先知道
我正在使用以下示例来暗示我的 viewPager: http://code.google.com/p/viewpagerexample/issues/list 这个例子的问题是我不知道如何设置我的起始
我想使用 PagerAdapter 扩展来循环我的 Viewpager 和 Im。我在网上找到的所有东西都是 Fragments 的一个例子。 我想用普通的页面适配器解决这个问题。因此,当我从第一个
所以我一直在努力解决这个问题。我是一个非常新的 android 开发人员,所以理解一些概念对我来说仍然非常困难。 在我的布局中,我使用 PagerAdapter 在页面之间水平滑动。我想在着陆布局中有
下面的代码适用于我的 viewpager 适配器。 import android.content.Context; import android.support.v4.view.Pag
我正在尝试在 PagerAdapter 中加载 Mapfragment。这是适配器代码, public class ShopPagerAdapter extends PagerAdapter {
我正在尝试构建一个寻呼机来按顺序显示图像。但是我收到了这个错误。 The application's PagerAdapter changed the adapter's contents witho
我的第一个 Android 应用程序有一个大问题 目标: 我想在滑动(左/右)时将 View 更改为 ViewPager 元素 问题 我写了一些代码行,但是没有用._。 我报告我的代码: 主 Acti
我是一名优秀的程序员,十分优秀!