处理的json是文章的列表,其中有:日期、文章标题、连接、发布时间戳等对象。
做android app打算把同一天的文章都在viewpager的一页里,那应该怎么返回相应的数据结构呢?
我想过将日期做为key,对应这一天的jsonArray处理好作为value,但是这样需要遍历读取出日期,再判断,加入。虽然数据量不大,但是这样代码太麻烦了。
请问有什么好的处理方法呢?或者android开发有什么好的解决方法不用这么麻烦的呢?
学生,开发经验尚浅,求解决,谢谢。
——————————————————————————————————————————————
主要是我觉得太麻烦了。先将json处理成list,再将list分开做成arraylist
——————————————————————————————————————————————
我的意思将
[ {....,"date":"2015-12-21",....}, {....,"date":"2015-12-21",....},........都是2015-12-21的 {....,"date":"2015-12-22",....},........都是2015-12-22的 {....,"date":"2015-12-23",....} ........都是2015-12-23的 ]
变为
[ [{....,"date":"2015-12-21",....}, {....,"date":"2015-12-21",....}] [{....,"date":"2015-12-22",....}], [{....,"date":"2015-12-23",....}] ]
就像Excel的分类汇总那样。而不是在SQLite中select..where那样。
除了上面写的用数据结构处理一下,我还真的想不到更好的方法了,请指点。
————————————————————————————————————————————————
json格式是这样的:
{"error":"","posts":[{"date":"2015-12-24","name":"","pic":"","publishtime":"1450926000","excerpt":""},.......]
看样子是我的表达能力有限。抱歉。就像excel的分类汇总那样,而不是select* from where。比如这一周的数据,周一放一堆,周二放一堆,周三放一堆,如此类推。返回的结果是一周分好堆的数据,而不是某一天的数据。
经过你们提醒我用了sqlite做缓存。只不过依然还是要用我以前的方法,读出一堆数据,然后在处理一下才能分堆。如果是用listview就不用这样。主要是因为我用viewpager,一页是一天的数据。所以才有这么麻烦。数据量不大,所以速度也不用多少。
也可以不用arraylist,只是用了hashmap方便存储当天最新时间戳等元素。
我就是想看看有没有更妙的方法。纯属吃饱了撑的。
按日期查询出来。。直接用fastjson序列化
这种结构化的数据,查询之后丢到SQLite里保存。然后下次直接查数据库,用CursorAdapter更新ListView。
SQL查询同一天的数据不是一句话的事情么~
那就要求后台的给你想要的数据结构吧
这样就不麻烦了~~
服务器返回json
[ { "id": 1, "日期": "2015-12-20", "文章标题": "组图:19岁女学生为内衣代言 秀D罩杯波涛胸涌", "链接": "http://news.cnr.cn/native/pic/20151219/t20151219_520849281.shtml", "发布时间戳": 1450706617 }, { "id": 2, "日期": "2015-12-20", "文章标题": "长腿林立美丽“冻”人 美女半裸滑雪香艳无边(组图)", "链接": "http://news.163.com/15/1220/14/BB9MO1AS00014AEE.html", "发布时间戳": 1450706417 }, ... ]
java
类
private class Article{ int id; String 日期; String 文章标题; String 链接; long 发布时间戳; }
用gson对服务器返回的json
转换成java
对象,然后存入sqlite
,用id
为主键。
我习惯用Afinal数据库框架。
从本地恢复数据就很简单啦,ORDERY BY id DESC LIMIT xx条
即可。甚至像网易新闻,有不同分类新闻,在java
类加type
字段,查找时WHERE type=x ORDERY BY id DESC LIMIT xx条