我现在有一个接口,接口中能获取很多网站数据,用一个ArrayList<HashMap<String,String>> 来存储这些需要显示在listview的数据。 现在实现的方案是:首先把接口中的数据全部读出来(貌似只能一次全部读出来),然后10条10条加载到listview中。
现在我在想,能不能通过这个接口一点一点的读?然后一点一点的放入ArrayList里面,比如读取接口中的10条数据,然后加载到listview中,感觉这样性能上会好很多。这样能实现吗?需要怎样才能实现呢?还是我想错了?请教各位了,谢谢!
如果介面有分頁拉取資料功能,那此問題不存在。
法一:自己寫個服務端處理介面回傳的數據,也就是原本客戶端要處理的分頁邏輯放在服務端做,客戶端只做無腦展示。
法二:客戶端處理分頁邏輯(你現在就是這樣幹的)
法一加了一個中間層,拉取資料可能變慢。
法二增加了客戶端資源消耗和效能損耗。
請自行比較二者耗費的資源和時間。
PS:我們的介面一般最後會加上page=num,取得分頁資料。當然Json裡面會有一個標示Flag,例如:hasMore:"false/true",根據此標示決定是否有更多資料。
這個需要服務端資料庫操作加上分頁,每頁10條,客戶端請求時加入對應頁碼得到對應分頁的資料。例如剛載入ListView的時候,取得第一頁的數據,ListView上拉載入更多時再加在下一頁。
但你的情境好像是沒有分頁,如果想提高效能的話就在客戶端分頁處理資料吧,把取得的資料(例如Json字串)轉換成JsonArray,每次讀10條,然後解析加入ArrayList中,然後顯示,這樣性能應該會好一些。