【技术】ListView组件的分页技术
一、ListView分页: (一)、目的: Android 应用开发中,采用ListView组件来展示数据是很常用的功能,当一个应用要展现很多的数据时,一般情况下都不会把所有的数据一次就展示出来,而是通过 分页的形式来展示数据,这样会有更好的用户体验。因此,很多应用都是采用分批次加载的形式来获取用户所需的数据。例如:微博客户端可能会在用户滑 动至列表底端时自动加载下一页数据,也可能在底部放置一个"查看更多"按钮,用户点击后,加载下一页数据。 (二)、核心技术点: 借助 ListView组件的OnScrollListener监听事件,去判断何时该加载新数据; 往服务器get传递表示页码的参数:page。而该page会每加载一屏数据后自动加一; 利用addAll()方法不断往list集合末端添加新数据,使得适配器的数据源每新加载一屏数据就发生变化; 利用适配器对象的notifyDataSetChanged()方法。该方法的作用是通知适配器自己及与该数据有关的view,数据已经发生变动,要刷新自己、更新数据。 (三)、 1、该监听器中有两个需要实现的方法: onScrollStateChanged(AbsListView view, int scrollState):监听屏幕的滚动状态的变动情况 onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount):监听屏幕滚动的item的数量 2、 scrollState 回调顺序如下: 第1次:scrollState = SCROLL_STATE_TOUCH_SCROLL(1):表示正在滚动。当屏幕滚动且用户使用的触碰或手指还在屏幕上时为1 第2次:scrollState =SCROLL_STATE_FLING(2) :表示手指做了抛的动作(手指离开屏幕前,用力滑了一下,屏幕产生惯性滑动)。 第3次:scrollState =SCROLL_STATE_IDLE(0) :表示屏幕已停止。屏幕停止滚动时为0。 3、 onScroll中参数讲解: firstVisibleItem:当前窗口中能看见的第一个列表项ID(从0开始) visibleItemCount:当前窗口中能看见的列表项的个数(小半个也算) totalItemCount:列表项的总数 4、思路: 当滚到最后一条,加载新数据;适配器的数据源要进行累加:totalList.addAll(list);数据发生变化,适配器通知:adapter.notifyDataSetChanged();【牢记】判断是否滚到最后一行。
android:layout_width="fill_parent"
android:layout_height="fill_parent">
(资料图片)
<LISTVIEW< p="">
android:id="@+id/listView_main"
android:layout_below="@+id/button_main_init"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LINEARLAYOUT< p="">
android:id="@+id/layout_main_nextpage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#000"
android:visibility="invisible"
android:gravity="center"
android:onClick="clickButton"
android:padding="5dp">
<PROGRESSBAR< p="">
android:id="@+id/progressBar_main"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TEXTVIEW< p="">
android:id="@+id/text_main_nextpage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:textSize="18sp"
android:onClick="clickButton"
android:textColor="#fff"
android:text="点击加载更多数据"/>
2、Activity页面核心代码:
publicclass MainActivity extends Activity {
privateStringTAG= "MainActivity";
privateListView listView_main;
privateLinearLayout layout_main_nextpage;
private MySQLiteDatabaseHelper dbHelper = null;
// 用于分页显示数据的属性
privateintpageSize= 30;// 每页显示的条数
privateintcurPage= 1;
privateintrowCount= 0;
privateintpageCount= 0;// 总页数
privatebooleanisBottom=false;// 判断是否滚动到数据最后一条
private ListtotalList = null;// 加载到适配器中的数据源
private SimpleAdapter adapter = null;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView_main = (ListView) findViewById(R.id.listView_main);
layout_main_nextpage = (LinearLayout) findViewById(R.id.layout_main_nextpage);
// 实例化访问数据库帮助类
dbHelper = new MySQLiteDatabaseHelper();
// 获取数据表一共有多少条,从而计算共有多少页
rowCount=dbHelper.selectCount("select id from android_basic",null);
// 计算总页码数
pageCount = (int) Math.ceil(rowCount / (float) pageSize);
// 如果当前页为第一页,则数据源集合中就是第一页的内容
if (curPage == 1) {
totalList = getCurpageList(1);
}
adapter = new SimpleAdapter(this, totalList,
R.layout.item_listview_main, new String[] { "_id", "title" },
newint[] { R.id.text_item_listview_id,
R.id.text_item_listview_title});
listView_main.setAdapter(adapter);
// 给ListView对象设置滚动监听器,以此来判断是否已经滚动到最后一条,从而决定是否加载新数据
listView_main.setOnScrollListener(new OnScrollListener() {
@Override
publicvoid onScrollStateChanged(AbsListView view, int scrollState) {
if (isBottom) {
// 如果滚到最后一条数据(即:屏幕最底端),则显示:“加载更多新数据”
if(curPage < pageCount) {
layout_main_nextpage.setVisibility(View.VISIBLE);
}
} else {
layout_main_nextpage.setVisibility(View.GONE);
}
}
@Override
publicvoid onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// Log.i(TAG, "==" + firstVisibleItem + ":::" + visibleItemCount
// + ":::" + totalItemCount);
// 判断是否已经滚动到了最后一条,从而决定是否提示加载新数据
isBottom = (firstVisibleItem + visibleItemCount == totalItemCount);
}
});
}
publicvoid clickButton(View view) {
switch (view.getId()) {
caseR.id.layout_main_nextpage:
// Log.i(TAG, "==" + curPage + ":::" + pageCount);
// 如果不是最后一页,则让当前页码累加,让数据源累加新数据,并通知适配器信息发生变化
if(curPage < pageCount) {
curPage++;
totalList.addAll(getCurpageList(curPage));
adapter.notifyDataSetChanged();
}
// 只要点击了提示“加载新数据”的信息,就让其隐藏
layout_main_nextpage.setVisibility(View.GONE);
break;
default:
break;
}
}
// 获取每一页的数据,返回List集合
private ListgetCurpageList(int currentPage) {
int offset = (currentPage - 1) * pageSize;
String sql = "select id _id ,title from android_basic limit ? , ?";
returndbHelper.selectData(sql, new String[] { offset + "",
pageSize + "" });
}
}
标签:
相关推荐:
精彩放送:
- []忘记TP-LINK路由器登录密码如何解决?TP-LINK路由器登录密码找回方法
- []热推荐:电脑端的explorer对话框为什么很慢?解决方法是什么?
- []全球热资讯!磁盘管理器里面看不到新硬盘怎么办?解决措施如下
- []pet考试报名抢票秘诀 报名时间有哪些?
- []当前关注:可以打电话的平板电脑有哪些款式?可以打电话的平板电脑推荐
- []蛇圣耳机怎么样?蛇圣耳机详细评测
- []环球快资讯:暴怒无常的无常是什么意思?暴怒是喜怒无常吗?
- []什么是短期偿债能力分析?短期偿债能力如何分析?
- []LOL服务器连接异常如何解决?LOL服务器连接异常的解决方法
- []【天天快播报】课外学问:狐假虎威是什么意思?其寓意是啥?
- []世界视点!网站iis php发布网站吗?PHP网站在IIS中发布的相关配置
- []世界百事通!Desktop.ini是什么文件?desktop.ini可以删除吗?
- []realtekhdaudio装不上驱动的问题如何解决?解决方法步骤
- []天天热头条丨厦门海湾公园有什么好玩的?厦门海湾公园的简介
- []微资讯!空气污染指数等级是多少?空气污染指数等级详情介绍
- []全球速看:公交车到底什么时候能够到站?GPS接受器价格一览
- []【教程】Devteam最新破解工具终于出炉了
- []世界看热讯:成熟盈利模式的胜利--短信市场分析案例
- []天天观察:感人的校园爱情故事——伤感日志分享
- []2021年国家开放大学计算机网络(本)试题及答案
- []液晶屏幕显示器整机无电故障如何处理?液晶屏幕维修之常见问题判断
- []环球报道:拼多多一元秒杀怎么抢?拼多多1元秒杀攻略
- []全球热资讯!五火七禽扇真实长相 你知道多少?
- []【天天时快讯】西门子cx6怎么样?西门子cx65详细评测
- []天天简讯:guest账户怎么开启和关闭?guest账户关闭和开启教程
- []世界焦点!三星s5660如何刷机?三星s5660刷机教程
- []天天热推荐:诺基亚6700c评测:全金刚材质打造的全金属手机
- []北京多少分能上一本?2010-2021北京历年本科批分数线汇总
- []热点在线丨热血无赖怎么使用计算机?Win7系统进不去热血无赖游戏如何解决?
- []诺基亚7230怎样刷机?诺基亚7230刷机步骤盘点
- []课外常识:藐视的意思是什么?藐视的含义
- []聚焦:摄像录音笔都有哪些品牌?韩国现代品牌的摄像笔有什么特点?
- []环球观速讯丨北京移动动感地带到底是怎么收费的?详情介绍
- []天天头条:电脑怎么重装系统?电脑重装系统方法大全
- []孟买蓝宝石金酒兑什么?孟买金酒有哪些?
- []环球热推荐:视网膜显示屏和普通显示屏什么区别?看完你就明白了
- []型钢理论重量表 各类钢材计算公式最全合集
- []天天热头条丨诺基亚手机怎么恢复出厂设置?方法步骤
- []今日热门!Windows键是键盘上的哪个键?Win键的作用有多大?
- []官方解读《蚌埠市光伏建筑应用试点城市实施方案》
- []焦点日报:国家能源局:2月全社会用电量6950亿千瓦时 同比增长11.0%
- []天天速讯:无锡限购松绑 可持半年以上居住证购房
- []3月21日财经早餐:金价从一年高位回落,银行业脆弱性导致交投震荡
- []焦点关注:最新龙虎榜:机构买入工业富联超3亿,知名游资买入光线传媒
- []【环球聚看点】蘸虾的汁怎么调放醋吗_蘸虾的汁怎么调
- []【焦点热闻】驾驶证换证可以异地办理吗 _朗逸自动挡起步正确方法是什么
- []富力地产:与盐城富力科创共同承担18.3亿元转让款及逾期违约金
- []世界焦点!股价三日累计涨20% 张江高科:公司近期主营业务无重大变化
- []天天快播:中南建设:收到新增被讼的诉讼、仲裁案件金额合计57.32亿元
- []银河微电2022年净利8638.04万同比减少38.68% 董事长杨森茂薪酬95.65万
- []全球今日讯!鹰君按行使价每股16.52港元授出562万份购股期权
- []天天要闻:远东发展旗下博彩业务公司完成配发新股份 筹资2000万美元
- []拼多多去年净利润315亿元!四季度营收398亿元,同比增长46%
- []华发股份:2022年度计提资产减值准备总额8.4亿元
- []【当前热闻】古鳌科技:3月17日公司高管陈崇军减持公司股份合计1.6万股
- []华发股份拟向合作项目股东提供财务资助 盘活闲置盈余资金
- []世界热推荐:绿城管理获CEO兼董事李军增持40万股股份 总代价289.9万港元
- []全球快讯:晶瑞电材:3月17日公司高管薛利新减持公司股份合计30万股
- []环球快播:崧盛股份:3月17日公司高管邹超洋、凌彩萌减持公司股份合计3.43万股
- []焦点讯息:松芝股份:目前公司小车事业部直接出口热管理产品的客户包括台湾中华汽车、印尼五菱等
- []地藏菩萨本愿经读诵60分钟完整版_地藏王菩萨本愿经诵读
- []环球短讯!万科A:受让泰禾集团19.9%股权的先决条件尚未达成
- []芯源微:3月17日公司高管宗润福减持公司股份合计2万股
- []世界最新:中国恒大:清盘呈请聆讯进一步延期至2023年7月31日
- []世界短讯!房企债务重组加速,新政驱使下,行业新一轮洗牌加码
- []华发股份拟对子公司及联合营公司净增加合计1100亿元担保额度
- []合力泰:公司在企业治理方面严格按照内控管理制度及各项监管的要求执行,以保障企业经营生产的规范运营
- []世界要闻:丝路视觉:瑞云科技可以为云游戏企业提供相关服务
- []华发股份:2022年实现收入591.89亿元
- []微速讯:卓锦股份中标瑶海区老厂区东一地块污染土壤修复项目 中标价2.9亿(含税)
- []天天头条:中国民航局发布《关于“3·21”东航MU5735航空器飞行事故调查进展情况的通报》
- []招商蛇口2022年总营收增13.9%至1830亿 归母净利降近六成
- []热门看点:浙江交科:公司承接的与亚运会相关的补充性交通基础设施项目施工合同金额占公司在建项目合同总额比例不大
- []环球最新:福州“福晟钱隆樽品”项目公司被申请破产重整 当前负债超40亿
- []世界快资讯:招商蛇口:2022年归属股东净利润42.64亿元
- []永泰运:目前公司生产经营情况一切正常,一季度业绩情况请以公司公告为准
- []商旅客“反卷”航司和TMC,商旅服务究竟要怎么做?
- []全球要闻:砼结构工程施工质量验收规范gb50204-2021_砼结构
- []高盛发布贝壳研报:复苏市场中经营杠杆强劲,目标价升至26美元/68港元
- []全球滚动:* 归母亏损扩大约58%,歌礼制药跌超7%
- []快讯|三棵树拟对全资子公司秀屿三棵树增资4亿元
- []全球热消息:Club 72 盛启 | 每一次和世界的约会,都在蕴育一次新的传奇
- []热文:建霖家居收涨7.11% 总市值55.47亿元
- []天天快消息!硅谷银行成首张倒下的多米诺骨牌?美联储或因此放缓加息,利好A股
- []当前关注:迈普医学:目前公司仍有两款固定产品及个体化PEEK颅颌面修补系统尚处于注册报批阶段
- []环球观点:快讯|海信家电斥资2.11亿元回购1170万股,占总股本0.86%
- []快播:金龙鱼:截至2023年3月10日公司股东共计165,229户
- []海信电视UX入选彩电品类现象级产品:参考级影像科技力拉满
- []【世界新视野】银行危机“阴魂不散”!瑞信美股盘前一度跌近60%,瑞银的CDS也飙升
- []环球热议:建行定期存款利率
- []当前讯息:锂离子电池的正极材料通常有哪些?
- []每日动态!广东:支持民营企业投建太阳能发电等项目 不得设置附加条件和歧视性条款
- []上海独角兽企业纬景储能宣布获得超6亿元融资, 战略布局锌铁液流电池产能规模化发展
- []天天通讯!光伏产业供应链价格报告(2023.3.8~3.15)
- []老凤祥:央视融媒体产业基金拟以2.94亿元受让老凤祥有限1.5%股权
- []“21大连万达MTN001”将付息及回售部分兑付 利率6.2%
- []天天新消息丨象屿股份:公司将回购注销约143万股 注册资本减少为22.62亿元
- []天天最新:安徽亳州:第二次公积金贷款最低首付比例由50%降至30%
- []焦点简讯:财报金选丨绿城管理2022年实现收入26.56亿元 同比增长18.4%
- []富淼科技:除节假日和生产设备检修外,该采用轮班制进行连续化生产,公司现有订单饱满
- 中海达:公司聚焦北斗卫星导航产业,重点发展测绘与空间地理信息、北斗高精度智能应用两大核心业务领域
- 全球头条:新安股份:因2月17日起全面实行股票发行注册制,故公司此前向证监会申报的材料均平移至交易所审核
- 全球观焦点:大额存单最新规定
- 当前速递!资产负债率多少比较合适
- 476位京津冀酒旅业同仁再聚首!久违了的热闹又回来啦
- 速递!五角星有几个角组成_五角星有几个角
- 世界热点评!大额定期存款利率表2023
- 还呗是正规平台吗
- vacation是什么意思?vacation的中文解释
- 世界快资讯丨中天湖南集团开启全球发售,预计3月30日登陆港交所
- 当前通讯!合锻智能:二级市场股价受多方面因素影响,股票的涨跌也不与企业的价值直接相关
- 每日快讯!温庭筠读拼音怎么写?温庭筠怎么读?
- 美的置业65.4亿元公司债券已获反馈
- 【世界热闻】十大名弓分别是什么?关于十大名弓的介绍
- 同方股份:公司目前还没有这方面的产品发布
- 当前快播:中冶置业:完成20亿元公司债券发行,票面利率4.21%
- 为精致生活打CALL,FAENZA法恩莎精致主义家装节贵阳站圆满落地
- 全球微速讯:情商低的人的10个特征 看看你占几个?
- 嘉兴浣莎医美温情开业 启幕医美新旅程
- 环球头条:合肥城建:拟发行3.36亿元中期票据
- 环球观速讯丨香港小轮:2022年实现收入2.80亿港元
- 世界消息!中国广电与高通合作,利好5G/算力建设产业链
- 天天观焦点:网络用语黑莲花是什么意思?网络用语黑莲花的含义
- 新华保险公司怎么样可靠吗
- 当前速讯:什么借款平台百分之百能借到款
- 宁波阪急宇宙之旅,漫步璀璨星河——宁波阪急超全楼层品牌分布实录
- 卫生信息管理专业是干什么的?卫生信息管理专业的就业方向介绍?
- 每日热文:学习企业管理的书籍有哪些?推荐几本学习企业管理的书籍?
- 上班挤公交技巧有哪些?上班挤公交小技巧分享
- 当前热点-LOL网通第一大区是哪个区?英雄联盟网通区有哪些?
- 平安普惠贷款无力偿还怎么办
- 【世界新要闻】戴尔台式机怎么设置U盘启动?戴尔台式机U盘启动的设置方法
- vuejs之Vue2.x中的父组件数据传递至子组件的方法
- 世界微资讯!股票开户网上开户流程
- 盛名之下的下一句是什么?盛名之下出处是哪里?
- 环球最资讯丨红楼梦十二金钗是什么游戏?红楼梦十二金钗游戏介绍?
- 新动态:女扮男装的小说有哪些?推荐几部女扮男装的小说?
- 全球头条:cad怎么导出jpg图片格式?cad导出jpg图片格式的方法
- 【世界播资讯】智能手机与智能机有什么区别?关于智能机的区别介绍
- Android音频开发及录音文件的配置
- 为什么叫梅雨时节?梅雨时节的分布是怎样的?
- 焦点速讯:引擎盖是车子哪个部位?汽车覆盖件包括哪些?
- 环球新动态:假面骑士共有几部?平成系列假面骑士有哪些?
- 每日看点!iOS14/iPadOS14正式发布 支持升级至苹果机型
- 全球实时:鹌鹑怎么养殖?鹌鹑养殖技术有哪些?
- 天天快资讯:长寿花怎么养殖?长寿花的养殖方法是什么?
- 全球观察:联想掌上电脑多少钱?联想掌上电脑价格及推荐
- 苹果手机怎么设置屏幕旋转?苹果手机屏幕旋转的设置教程
- 【世界播资讯】拉面剂的主要成分是什么?拉面剂的主要成分介绍?
- 每日热文:吊扇调速器怎么工作?吊扇调速器的原理介绍
- 世界热文:天府机场为何“又贵又远”?学者:成都双机场各有分工,利于川渝一体化
- 世界今热点:军体拳跟擒敌拳哪个最实用?军体拳跟擒敌拳有什么区别?
- 天天视讯!过小年的习俗有哪些?过小年的习俗介绍?
- 等额本金和等额本息的区别
- 热资讯!洗涤用品分类有哪些?洗涤用品包括什么分类?
- 天天快播:当年乔丹时代公牛队五大主力是谁?当年乔丹时代公牛队五大主力资料介绍?
- 四方会谈是指什么?历史上著名的四方会谈介绍?
- 全球快报:古代的灭九族是哪九族?现代的九族是什么意思?
- 以报开头的成语有哪些?以报开头的成语大全?
- 聚焦:波尔手表算几类表?波尔手表有哪些特点?
- 家用垃圾桶怎么选购?家用垃圾桶选购技巧是什么?
- 当前速读:双鱼座是什么月份?双鱼座简介?
- 今热点:启功为什么不姓爱新觉罗?启功不姓爱新觉罗的原因有哪些?
- 六个字的成语有哪些?六个字的成语大全?
- 【每日一练】什么是预编译?何时需要编译?
- 环球今亮点!美原油交易策略:欧美银行业危机担忧笼罩市场,油价创逾十五个月新低
- 环球快资讯:广州从化太平镇4宗商务金融用地使用权整体拍卖流拍 变卖价约1.4亿
- 国信期货日评:原油持续下挫,燃料油走弱,期螺高开低走
- 环球微动态丨辽宁:1-2月房地产开发投资下降16.6%
- 3月20日姚记科技涨停分析:游戏,手游,独角兽概念热股
- 最资讯丨封神榜妲己封的什么神?关于妲己的故事是什么?
- 广州:2023年计划安排建设用地供应总量3203公顷
- 播报:汩罗是湖南哪个市?汩罗资料介绍?
- 全球热推荐:格力博:公司未在硅谷银行开户,也没有存款
- 每日快讯!重庆市东坡商业广场有限公司金融债权首拍流拍 当前价1.25亿元
- 世界速读:工程造价是什么?工程造价怎么解释?
- 每日看点!qq个性说说怎么写?qq个性说说有哪些?
- 【世界新要闻】3月20日上海电影涨停分析:影视,上海国企改革,国企改革概念热股
- 全球速看:3月20日中天科技涨停分析:铜箔/覆铜板,储能,风电概念热股
- 凤凰传媒:公司近期生产经营正常
- 环球实时:西安曲江文化控股10亿元中期票据将付息 利率5.20%
- 焦点速讯:什么是机关行政管理?行政机关管理是指什么?
- 当前时讯:【风口研报】超预期出现!AIGC三大核心概念曝光 又有大利好!特高压也迎来风口
- 每日观点:笛子高音上不去的原因_高音上不去怎么办
- 焦点滚动:光明房产8亿元中期票据完成发行,利率3.73%
- 全球要闻:【中指快评】无锡出台《关于进一步促进房地产市场健康发展若干措施的通知》
- 贝壳研究院:3月首套房贷利率微降 银行放款加速
- 当前最新:2月郑州全市商品住房销售12583套,135.71万平方米,环比增长118.25%
- 新资讯:共同药业:截只2022年2月28日公司股东人数为17015人
- 华熙LIVE·五棵松入选第二批国家级旅游休闲街区名单
- 热点聚焦:中国建筑兴业:2022年实现营业收入76.68亿港元
- 当前头条:徐工机械:经核实,2023年2月份公司下属公司徐州徐工液压件有限公司不存在污染物排放超标情况
- 信息:分期乐是正规借款平台吗
- 社保卡里面的钱可以取出来吗
- 【世界独家】360借条是正规的吗
- 观点:纬景储能A轮融资超6亿
- 多路资金集结进场 机构看好经济复苏主线
- 微众银行企业贷款可靠吗
- 焦点关注:养老保险个人一年多少钱
- 天天微动态丨江苏无锡:优化住房限购范围 适当调整限购区域