我现在有一个接口,接口中能获取很多网站数据,用一个ArrayList<HashMap<String,String>> 来存储这些需要显示在listview的数据。 现在实现的方案是:首先把接口中的数据全部读出来(貌似只能一次全部读出来),然后10条10条加载到listview中。
现在我在想,能不能通过这个接口一点一点的读?然后一点一点的放入ArrayList里面,比如读取接口中的10条数据,然后加载到listview中,感觉这样性能上会好很多。这样能实现吗?需要怎样才能实现呢?还是我想错了?请教各位了,谢谢!
黄舟2017-04-17 13:29:51
如果接口有分页拉取数据功能,那此问题不存在。
法一:自己写个服务端处理接口返回的数据,也就是本来客户端要处理的分页逻辑放在服务端做,客户端只做无脑展示。
法二:客户端处理分页逻辑(你现在就是这么干的)
法一加了一个中间层,拉取数据可能变慢。
法二增加了客户端资源消耗和性能损耗。
请自行比较二者耗费的资源和时间。
PS:我们的接口一般最后会加个page=num,获取分页数据。当然Json里面会有个标示Flag,例如:hasMore:"false/true",根据此标示决定是否有更多数据。
天蓬老师2017-04-17 13:29:51
这个需要服务端数据库操作加上分页,每页10条,客户端请求时添加相应页码得到相应分页的数据。比如刚加载ListView的时候,获取第一页的数据,ListView上拉加载更多时再加在下一页。
但是你的情景好像是没有分页,如果想提高性能的话就在客户端分页处理数据吧,把获取的数据(例如Json字符串)转换成JsonArray,每次读10条,然后解析加入ArrayList中,然后显示,这样性能应该会好一些。