亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

陪伴而非守候 2021-09-03 21:55:35
首先我想說:這個問題沒有重復!我已經閱讀了很多關于在向下滾動時加載更多項目的問題。這對我最有幫助。但是我讀到的所有問題都沒有解釋基本原理。所以,我的意思是:我的應用程序會從一個JSON并顯示數據ListView,但它無法加載一個從數據庫中的所有項目request。該應用程序崩潰...解決方案是僅加載 10 個項目,然后再次向下滾動 10 個項目。但是這樣做的基本原則是什么?我想過這兩種不同的選擇:在我的 PHP 文件中設置一個 LIMIT,并為每 10 個項目發送一個來自 android 的新請求并設置 LIMIT +10。從 android 發送一個請求并從 json 獲取所有數據,但只顯示 10 個項目。代碼不是必需的,因為我想知道這樣做的原理。
查看完整描述

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()函數中在啟動請求之前以及一旦數據加載和請求后使其為是完成讓它再次成為。我希望這會有所幫助。


查看完整回答
反對 回復 2021-09-03
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

你必須找到權衡。根據您的數據大小,有時將其全部解析并保存在本地數據庫中是有意義的。

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

如果您選擇選項 2,您可以使用類似JobIntentService靜默獲取數據并保存在本地的方法。

這種方法還可以讓您的用戶與沒有互聯網(離線模式)的場景進行交互。


查看完整回答
反對 回復 2021-09-03
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

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

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


查看完整回答
反對 回復 2021-09-03
  • 3 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號