2017-03-16 37 views
0

我試圖顯示我從其他web服務(spring),列表(RecyclerView)中獲取的數據。數據可以由數千行組成。我應該如何使用這些數據?我應該如何使用我從Web服務器獲取的數據,在Android

  • 我應該獲取所有數據(或100行)並將它們存儲在本地,並從本地讀取它們以在列表中查看。如果我使用這些,我應該如何刷新本地數據?
  • 我應該抓取20行並查看它們,當用戶向下滾動併到達最後一項時,我獲取另外20行?
  • 或者我應該用另一種方式嗎? 如果我將所有數據存儲爲數組,它可能會導致內存不足。有沒有教程或關鍵詞來搜索?

twitter或instagram如何使用這些數據?在twitter列表中可以有很多項目,但它不會崩潰,並且twitter可以顯示之前,離線下載的項目(這意味着存儲數據在本地,不是嗎?)

+0

我會建議在您的recyclerView中加載初始數據量(即20行),要麼實現自動加載監聽器,即當用戶到達可見項的底部時獲取更多數據,或者您可以使用SwipeRefreshLayout加載更多數據。 –

回答

1

爲了使應用程序工作更流暢RecyclerView,使用Endless Scrolling。 一次加載20個項目,在您的服務器API調用上應用分頁。

使用OKHttp Response Caching緩存從服務器到本地存儲器的每個響應。

+0

無盡的滾動看起來不錯,它適用於獲取數據和添加到列表。但我應該如何處理舊物品以及如何使用它們?如果我添加我抓取的項目,列出(我使用ArrayList設置recyleview),列表成爲biger和biger。我應該清除列表並添加新項目列表?也應該知道用戶向上滾動併到達第一個可見的項目?從本地(緩存或某處)添加舊項目列表? – uuur

+0

如果從緩存數據獲取結果,則不必擔心列表大小,因爲緩存數據加載速度更快,資源更少,因此它可以正常工作。 如果您不清除列表中的舊數據,則不需要跟蹤用戶的滾動位置。 RecyclerView適配器將自行管理它。 –

0

創建一個本地數據庫,存儲您已經加載到數據庫中的所有數據,並添加一個「新鮮」,如時間戳,如果您的數據可能會發生變化。如果您的數據量很大,請考慮首先加載數據的「索引」,然後再加載單個的詳細信息。

0

當然,你不應該一次獲取所有的數據。閱讀關於android中動態數據的分頁。 Recycler View還爲靜態數據使用內置分頁,但在動態數據的情況下,即當您從API檢索數據時,當用戶向下滾動列表以獲取下一組數據時,應向您的API發送請求。爲了做到這一點,你必須擴展RecyclerView的OnScrollListener並覆蓋OnScrolled方法。

相關問題