3 回答

TA貢獻1824條經驗 獲得超8個贊
我在我的應用程序中使用的方法是:
第 1 步:我從服務器加載第一組有限制的數據,然后將最后一個記錄數據 id 存儲在一個變量中。
第 2 步:為您的 listView 或 RecyclerView 實現滾動結束偵聽器。
第 3 步:在滾動結束偵聽器內部啟動另一個請求并加載新記錄。(這里我再次在變量中設置數據 ID)
例如:
在活動開始時啟動請求并執行我之前解釋的操作。
GetBusinesses("&isOpen=2&cat="+Prefrences.getSelectedCategoryId());
然后在你的 Scroll End Listener 里面
GetBusinesses("&isOpen=2&cat="+Prefrences.getSelectedCategoryId()+"&limit=10&lastDataId="+BusinessItems[index].mBusinessId)
編輯為了避免在GetBusinesses()內部重復調用 api檢查請求是否之前已啟動,這個想法是創建一個布爾值最初為false然后在您的GetBusinesses()函數中在啟動請求之前以及一旦數據加載和請求后使其為真是完成讓它再次成為假。我希望這會有所幫助。

TA貢獻1794條經驗 獲得超8個贊
你必須找到權衡。根據您的數據大小,有時將其全部解析并保存在本地數據庫中是有意義的。
僅對于 200-300 條記錄,您不想在列表中每 50 條記錄后進行另一個 api 調用。請記住,移動應用程序用戶經常上下滾動。您可能會不必要地向您的服務器發送多個請求,這可能會導致過載(取決于用戶數量)。
如果您選擇選項 2,您可以使用類似JobIntentService
靜默獲取數據并保存在本地的方法。
這種方法還可以讓您的用戶與沒有互聯網(離線模式)的場景進行交互。

TA貢獻1820條經驗 獲得超9個贊
通常,您每次都會從服務器加載 10 個新項目。使用頁面參數來確定您需要哪些 10 個項目以及放置它們的位置。
一次加載所有項目可能太昂貴了:延遲可能很長,用戶的數據計劃也不會滿意。顯然取決于有多少項目以及它們有什么內容。
添加回答
舉報