重写ViewPager实施单一交有关切换到这个问题,并没有缓存
我们需要解决这个问题:切换时,可以实现单独的消息到左和右,但我不知道的情况下根据岗位总数。只是不知道ViewPagerAdapter的getCount数量。
因为帖子内容的数据图片和布局比較复杂。所以不让ViewPager缓存。否则消耗内存太大。
重写ViewPager
public class LazyViewPager extends ViewGroup {
private boolean isCanScroll = true;
public boolean isCanScroll() {
return isCanScroll;
}
public void setCanScroll(boolean isCanScroll) {
this.isCanScroll = isCanScroll;
}
private static final String TAG = "LazyViewPager";
private static final boolean DEBUG = false;
private static final boolean USE_CACHE = false;
<span style="color:#ff0000;">private static final int DEFAULT_OFFSCREEN_PAGES = 0;//默认的载入页面,ViewPager是1个,所以会载入两个Fragment</span>
private static final int MAX_SETTLE_DURATION = 600; // ms
重写ViewPager的setAdapter能够实现单个帖子指定跳转到的页数
public void setAdapter(PagerAdapter adapter,int position) {
if (mAdapter != null) {
mAdapter.unregisterDataSetObserver(mObserver);
mAdapter.startUpdate(this);
for (int i = 0; i < mItems.size(); i++) {
final ItemInfo ii = mItems.get(i);
mAdapter.destroyItem(this, ii.position, ii.object);
}
mAdapter.finishUpdate(this);
mItems.clear();
removeAllViews();
mCurItem = 0;
scrollTo(0, 0);
}
mAdapter = adapter;
if (mAdapter != null) {
if (mObserver == null) {
mObserver = new PagerObserver();
}
mAdapter.registerDataSetObserver(mObserver);
mPopulatePending = false;
if (mRestoredCurItem >= 0) {
mAdapter.restoreState(mRestoredAdapterState, mRestoredClassLoader);
<span style="color:#ff0000;"> if(position>0){
setCurrentItemInternal(position, false, true);
}else{
setCurrentItemInternal(mRestoredCurItem, false, true);
}</span>
mRestoredCurItem = -1;
mRestoredAdapterState = null;
mRestoredClassLoader = null;
} else {
populate(position);
}
}
}
只是前提是设置这个ViewPager的Adapter的getCount的数量为1000或者Integer.Max
假设要实现ViewPager的Fragment不反复运行onCreateView方法,须要重写destroyItem
private class MyFragmentAdapter extends FragmentPagerAdapter{
public MyFragmentAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
MyFragment fragment = new MyFragment(arg0);
return fragment;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 10;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
// super.destroyItem(container, position, object);
}
@Override
public void destroyItem(View container, int position, Object object) {
// TODO Auto-generated method stub
// super.destroyItem(container, position, object);
}
}
假设要设置ViewPager实现左右无限切换,能够通过重写Adapter的getItem()方法。
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
MyFragment fragment = fragments.get(arg0%4);
return fragment;
}
前提是getCount是个非常大的数
版权声明:本文博主原创文章,博客,未经同意不得转载。
重写ViewPager实施单一交有关切换到这个问题,并没有缓存的更多相关文章
- Android重写ViewPager改动滑动灵敏度
使用ViewPager作为一个页面进行切换.里面能够存放非常多View,但有时在操作View时不小心滑动一下就有可能跳到下一页,这并非我们想要的,这里就须要重写ViewPager改动它的滑动条 ...
- Android借助Handler,实现ViewPager中页面的自动切换(转)
在很多电商网页及app上都有自动切换的商品的推广快,感觉体验挺不错的,正好今天学习使用ViewPager,因此也实现了一个功能类似的demo. 下面是其中的两个截图: 实现一个自动 ...
- ViewPager源码分析——滑动切换页面处理过程
上周客户反馈Contacts快速滑动界面切换tab有明显卡顿,让优化. 自己验证又没发现卡顿现象,但总得给客户一个技术性的回复,于是看了一下ViewPager源码中处理滑动切换tab的过程. View ...
- ViewPager+PagerTabStrip实现页面的切换
页面切换效果图 首先创建布局: 代码: <?xml version="1.0" encoding="utf-8"?><LinearLayout ...
- ViewPager+Fragment实现页面的切换
新知识,新摘要: 效果图:framgent导入包都是v4包下,谨慎导入错误! 首先设置viewPager布局: <?xml version="1.0" encoding=&q ...
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
以下内容为原创,转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3364728.html 我前两天写过一篇博客<Android使用Fragment来 ...
- 基于ViewPager的一些酷炫切换效果
1.ViewPager可以用于实现类似banner的功能,我曾经在“时间超市”项目中使用过.但如何在此基础上实现一些切换的酷炫效果呢?今天细细品读了鸿洋大神的相关博文,终于学会了如何自定义切换效果. ...
- android中viewPager实现的屏幕左右切换(入门篇)
大多数的APP都可以实现几个屏幕来回的切换, 首先新建两个Activity,内容随意,布局随意.接下来在MainActivity.xml: <RelativeLayout xmlns:andro ...
- Android 自定义 ViewPager 打造千变万化的图片切换效果
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主 ...
随机推荐
- JAVA - 优雅的记录日志(log4j实战篇) (转)
写在前面 项目开发中,记录错误日志有以下好处: 方便调试 便于发现系统运行过程中的错误 存储业务数据,便于后期分析 在java中,记录日志有很多种方式: 自己实现 自己写类,将日志数据,以io操作方式 ...
- tasklet和workqueue的选择
linux内核设计与实现page127中有个比較,内容比較多.概括一下就是1. tasklet不能休眠, 2. 不须要休眠tasklet效率更高 3.有休眠仅仅能workqueue (1)假设不须要休 ...
- (step 8.2.13)hdu 1524(A Chess Game)
题目大意 : 在一个 有向无环图顶点上面有几个棋子, 2个人轮流操作, 每次操作就是找一个棋子往它能够移 动的地方移动一格, 不能操作的人输. 输入第一行 为一个 N , 表示有 N 个顶点 0 -& ...
- Effective C++ -- 构造析构赋值运算
05.了解C++默默编写并调用哪些函数 编译产生的析构函数时non-virtual,除非这个类的基类析构函数为virtual 成员变量中有引用和const成员时,无法自己主动生成copy assign ...
- LVS+Keepalived实现高可用负载均衡(转)
LVS+Keepalived实现高可用负载均衡 一.原理 1.概要介绍 如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具 ...
- 阅读zepto.js的core中的Core methods
学习zepto.js,參考资料:http://www.zeptojs.cn/ 跟jQuery一样.其选择符号也是$; 首先接触的是 $.() 选择 $(selector, [context]) ⇒ ...
- asp.net Form 认证【转】
第一部分 如何运用 Form 表单认证 一. 新建一个测试项目 为了更好说明,有必要新建一个测试项目(暂且为“FormTest”吧),包含三张页面足矣(Default.aspx.Logi ...
- intellij idea该插件开发摘要
最近在做一个intellij idea插件,功能是读取表和数据库信息字段和预先定义的模板来生成代码文件(实体,service,springmvc该controller,freemark文件等). 找了 ...
- REST Service 基础 A further step.
1. REST Service虽然实现简单, 但也功能丰富, 可以用来实现各种基于Web的服务(service). 2. REST Service的一些特点: 1)平台无关 2) 语言无关 3)基于H ...
- 你不知道的Eclipse的用法:使用MAT分析Android的内存
如果使用DDMS确实发现了我们程序中存在内存泄露,那如何定位到具体出现问题的代码片段,最终找到问题所在呢?如果从头到尾分析代码逻辑,那肯定会把人逼疯,特别是在维护别人写的代码的时候.这里介绍一个极好的 ...