android viewpager 详解,详解Android App中ViewPager使用PagerAdapter的方法
PageAdapter是一个抽象类,直接继承于Object,导入包android.support.v4.view.PagerAdapter即可使用。
要使用PagerAdapter,
首先要继承PagerAdapter类,至少覆盖以下方法:
在每次创建ViewPager或滑动过程中,以下四个方法都会被调用,而instantiateItem和destroyItem中的方法要自己去实现。
public abstract int getCount();
这个方法,是获取当前窗体界面数
public abstract boolean isViewFromObject(android.view.View arg0,java.lang.Object arg1);
这个方法用于判断是否由对象生成界面
public java.lang.Object instantiateItem(android.view.View container,int position);
这个方法,return一个对象,这个对象表明了PagerAdapter适配器选择哪个对象放在当前的ViewPager中
public void destroyItem(android.view.ViewGroup container,int position,java.lang.Object object);
这个方法,是从ViewGroup中移出当前View
public class ViewPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean isViewFromObject(View arg0,Object arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public void destroyItem(View container,Object object) {
// TODO Auto-generated method stub
super.destroyItem(container,position,object);
}
@Override
public Object instantiateItem(View container,int position) {
// TODO Auto-generated method stub
return super.instantiateItem(container,position);
}
}
ViewPager的PagerAdapter不可以更新数据问题的解决在做项目的时候,发现即使调用了
galleryAdapter.notifyDataSetChanged();
但是ViewPager还是不会更新原来的数据。
后来在stackoverflow上面找到了方法,原文链接:
http://stackoverflow.com/questions/7263291/viewpager-pageradapter-not-updating-the-view
于是花了一点时间,修改了代码:
protected PagerAdapter galleryAdapter = new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0,Object arg1) {
return arg0 == ((View)arg1);
}
@Override
public int getCount() {
return size;
}
@Override
public Object instantiateItem(View container,int position) {
return bindGalleryAdapterItemView(container,position);
}
@Override
public void destroyItem(View container,Object object) {
((ViewPager) container).removeView((View) object);
};
@Override
public void finishUpdate(View arg0) {}
@Override
public void restoreState(android.os.Parcelable state,ClassLoader loader) {
};
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
};
注意:POSITION_NONE 是一个PagerAdapter的内部常量,值是-2,
API里面有说明:
int android.support.v4.view.PagerAdapter.POSITION_NONE = -2 [0xfffffffe]
可以更新数据了。嘿嘿。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
android viewpager 详解,详解Android App中ViewPager使用PagerAdapter的方法相关推荐
- Android Studio 实现将视频资源嵌入APP中
Android Studio 实现将视频资源嵌入APP中 (直取思路跟代码跳转文末,如有帮助勿忘分享点赞奥!你的支持是我更新的动力!) 在正文之前首先想给大家引入安卓数据存储路径: 内部存储inter ...
- android 中打电话,Android 在 APP 中实现拨打电话的方法
Android 在 APP 中实现拨打电话的方法 2020-12-20 09:17:08 方法一: 首先添加拨打电话的权限: /** * 拨打电话(直接拨打电话) * @param phoneNum ...
- android读取带公章的pdf文件,APP中如何显示带电子签名的PDF文件
之前碰到一个需求,需要在手机 APP 中显示 pdf 文件.经过调研发现,在电脑上的浏览器如 chrome.safari等,可以直接显示 pdf 文件.由此联想到,在 APP 中能否通过浏览器来加载显 ...
- android怎么监听多点触摸_Android开发中多点触摸的实现方法
Android多点触控需要LCD驱动和程序设计支持,其实我们只要采用电容屏触摸手机的技术即可,接下来,就让爱站技术频道小编来讲解Android开发中多点触摸的实现方法吧! 多点触摸技术在实际开发过程中 ...
- Android Studio真机调试,Run Configuration中没有deployment target解决方法
Android Studio真机调试时,Run Configuration中没有deployment target解决方法 一.手机USB线连接电脑,选择传输文件,如果选择"仅充电" ...
- 安卓app中国际化任何资源的方法
先说下国际化的问题.首先,一般认为所谓的国际化不包含逻辑的国际化,那么国际化涉及到的内容就是与广义上的用户UI相关的,包括用户能看到.听到.摸到的东西.当然,摸到东西,一般在软件层面就不探讨了.所以, ...
- android dlna uri,DLNA 在自己的APP 中添加投屏功能
功能:让本机的视频在其他设备上播放. demo 学习中 关键词: cling demo from: DROID DLNA 关于投屏的原理,协议相关的知识已经在上一篇中说明. 关于设备搜索,查找等不在此 ...
- 站长在线Python精讲:在Python中使用正则表达式的sub()方法替换字符串详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中使用正则表达式的sub()方法替换字符串详解>. 在Python中使用正则表达式的sub()方法替换字符串. ...
- 转:设置允许用户利用itunes同步一些资源到我们的App中
简单的解释一下,允许用户利用itunes同步一些资源到我们的App中,其实就是如一些地图等软件一样,就拿地图软件来说吧,如果开发者在制作的时候将每个地区的离线地图包全部放置在一个ipa中,那么不仅造成 ...
最新文章
- AI项目对接第二期——缺陷检测
- python协程学习——写个并发获取网站标题的工具
- idea配置Spring遇到的问题(Lombok和修改镜像仓库)
- 牛人的博客(机器学习,图像处理,计算机视觉)
- 数学--数论--随机算法--Pollard Rho 大数分解算法 (带输出版本)
- Highcharts的使用
- 【推荐】英国金融时报推荐的数据可视化图表分类图
- photoshop制作gif去掉杂色
- Python使用wordcloud+pillow基于给定图像制作词云
- c语言字符型211,C语言简单的字符驱动程序介绍
- 命名空间“Aspose”中不存在类型或命名空间名称“Slides”。
- Yii Framework2.0开发教程(6)数据库mysql--ActiveRecord
- POI操作Microsoft Office 之 操作PPT简单示例(附源码)
- 创建用户要给session权限,报错:user lacks CREATE SESSION privilege
- win10:为U盘设计图标
- Mac Book文件夹加密
- 16个博士回河南乡村创业,已有上市计划
- 离阿里最近的机会,来了
- 01马氏链及其平稳分布
- 揭秘Google排名的60个因素
热门文章
- 别以为用留言簿留言骂我我就查不出来!哼~
- VB 字符串续行符最多25行…………
- 2018mysql数据库面试题_面试题: mysql 数据库去重 已看1 不好使
- 如何将地址栏打开的图标隐藏_如何制作一款手机主题?这套UI主题图标教程将为你解密!...
- 古风祥云PNG免抠素材,喜欢吗?
- 海报设计素材模板|炫彩创意PSD分层时尚艺术海报 ​​​​
- wits数据格式_WITS标准
- php sql update 字段a=字段b的信息_企业级PHP求职最全精品面试100问(附答案)
- MyBatis的总结(上)
- 记一次pthread_cancel_init段错误分析(bpftrace)