安卓开发_浅谈ListView之分页列表前言: 在开发的过程中,有时候我们需要从网络解析一些数据,比如最近的一些新闻,我们需要把这些数据用ListView显示出来。 因为是解析一个网络数据源,这样将会一下子将所有的数据解析出来,当数据源数据过大时,就可能会造成解析时间过长,占用内存过大等问题。 这时候想到用分页列表来显示这些数据,即每次只显示一个屏幕所能容纳条数的列表项数据,当用户手指向下拉动的时候,才再加载一个屏幕所能容纳的条数的数据,这样就解决了上述问题。 --------------------------------------------------------------------------------------------------------------------------------- 思路: 先来看一个数据源地址,内容为某一个城市待出售房屋信息 1 http://ikft.house.qq.com/index.php?guid=866500021200250&devua=appkft_1080_1920_XiaomiMI4LTE_1.8.3_Android19&order=0&searchtype=normal&devid=866500021200250&appname=QQHouse&mod=appkft&act=searchhouse&channel=71&page=1&rn=20&cityid=1 该地址红色部分代表页数,rn=20代表一页有20条相应数据 通过www.bejson.com网站解析该网址相应的JSON数据为XML格式 1 { 2 "retcode": 0, 3 "retmsg": "成功", 4 "total": "817", 5 "page": 1, 6 "rn": 20, 7 "data": [ 8 { 9 "fid": "122591", 10 "fcover": "http://p0./estate/0/cbcef0b36d585650ec602ebe0ca56a18.jpg/180", 11 "fname": "鸿坤·理想湾", 12 "faddress": "涿州东高铁新城涿州东站西侧300米", 13 "fregion": "大北京", 14 "fpricedisplaystr": "7200元/平米", 15 "faroundhighprice": 7500, 16 "faroundlowprice": 6500, 17 "groupbuynum": 3587, 18 "lng": "116.052084096376", 19 "lat": "39.4636526249295", 20 "fsellstatus": "1", 21 "istencentdiscount": 0, 22 "bookmark": [ 23 { 24 "tag": "看房团", 25 "type": 2 26 }, 27 { 28 "tag": "低总价", 29 "type": 3 30 }, 31 { 32 "tag": "品牌开发商", 33 "type": 3 34 } 35 ], 36 "price_pre": "均价", 37 "price_value": "7200", 38 "price_unit": "元/平米", 39 "panoid": "", 40 "heading": "", 41 "pitch": "", 42 "has_agent": 1, 43 "hui": 1 44 }, 45 也就是说,当我们解析这个网址的数据时,会有20条数据,当把网址红色部分page=1 --->page=2 时,又将显示20条数据
怎么实现分页列表一次显示20条数据呢? 从数据源网址可以看出一个我们只要把page依次加一,便可以依次加载对应网址数据源了 也就是说,只要把每次加载的数据添加到适配器中,便可以实现分页列表每页每次加载固定个数个数据条 ------------------------------------------------------------------------------------------------------------------------------------------------------------ 代码: 1、解析房屋信息,我们这里先只获得房屋名字信息放到ListView中 先建一个房屋实体类 ![]() 2、工具类(http获取数据,json数据解析) ![]() ![]() 3、ListView的自定义适配器类 ![]() 4、异步任务获得数据 ![]() 5、主Activity ![]()
效果图:
分类: 安卓开发基础 |
|