簡體   English   中英

在列表視圖中向下滾動時如何加載更多項目?

[英]How can I load more items when scrolling down in listview?

首先我想說:這個問題不可重復!

我已經閱讀了很多有關向下滾動時加載更多項目的問題。

對我最有幫助。

但是我讀的所有問題都不能解釋基本原理。

所以,我的意思是:

我的應用程序從json獲取數據並將其顯示在ListView ,但是無法通過一個request從數據庫加載所有項目。 該應用程序崩潰了…

解決方案是僅加載10個項目,然后再次向下滾動10個項目。

但是,這樣做的基本原理是什么?

我考慮了以下兩種不同的選擇:

  1. 在我的PHP文件中設置一個LIMIT,並為每10個項目發送一個來自android的新請求,並設置LIMIT +10。
  2. 從android發送一個請求,並從json獲取所有數據,但僅顯示10個項目。

不需要代碼,因為我想知道這樣做的原理。

通常,您每次都會從服務器加載10個新項目。 使用頁面參數來確定需要哪些10個項目以及將它們放置在何處。

一次加載所有項目可能太昂貴了:延遲可能會很長,並且用戶的數據計划也不會令人滿意。 顯然取決於有多少項目以及它們具有什么內容。

您將必須找到權衡。 根據您的數據大小,有時解析所有這些並將其保存在本地數據庫中是有意義的。

僅針對200-300條記錄,您不想在列表中每50條記錄后再進行一次api調用。 記住,使用移動應用程序時,用戶經常上下滾動。 您可能不必要向服務器發送多個請求,這可能會導致過載(取決於用戶數量)。

如果使用選項2,則可以使用JobIntentService方法靜默獲取數據並保存在本地。

這種方法還可以讓您的用戶在沒有Internet(脫機模式)的情況下進行交互。

我在應用程序中使用的方法是:

步驟#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()函數make完成后,再次使其為 希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM