猿问

在列表视图中向下滚动时如何加载更多项目?

首先我想说:这个问题没有重复!

我已经阅读了很多关于在向下滚动时加载更多项目的问题。

对我最有帮助。

但是我读到的所有问题都没有解释基本原理。

所以,我的意思是:

我的应用程序会从一个JSON并显示数据ListView,但它无法加载一个从数据库中的所有项目request。该应用程序崩溃...

解决方案是仅加载 10 个项目,然后再次向下滚动 10 个项目。

但是这样做的基本原则是什么?

我想过这两种不同的选择:

  1. 在我的 PHP 文件中设置一个 LIMIT,并为每 10 个项目发送一个来自 android 的新请求并设置 LIMIT +10。

  2. 从 android 发送一个请求并从 json 获取所有数据,但只显示 10 个项目。

代码不是必需的,因为我想知道这样做的原理。


陪伴而非守候
浏览 168回答 3
3回答

有只小跳蛙

我在我的应用程序中使用的方法是:第 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()函数中在启动请求之前以及一旦数据加载和请求后使其为真是完成让它再次成为假。我希望这会有所帮助。

慕田峪9158850

你必须找到权衡。根据您的数据大小,有时将其全部解析并保存在本地数据库中是有意义的。仅对于 200-300 条记录,您不想在列表中每 50 条记录后进行另一个 api 调用。请记住,移动应用程序用户经常上下滚动。您可能会不必要地向您的服务器发送多个请求,这可能会导致过载(取决于用户数量)。如果您选择选项 2,您可以使用类似JobIntentService静默获取数据并保存在本地的方法。这种方法还可以让您的用户与没有互联网(离线模式)的场景进行交互。

慕妹3146593

通常,您每次都会从服务器加载 10 个新项目。使用页面参数来确定您需要哪些 10 个项目以及放置它们的位置。一次加载所有项目可能太昂贵了:延迟可能很长,用户的数据计划也不会满意。显然取决于有多少项目以及它们有什么内容。
随时随地看视频慕课网APP

相关分类

Java
我要回答