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条经验 获得超7个赞
你必须找到权衡。根据您的数据大小,有时将其全部解析并保存在本地数据库中是有意义的。
仅对于 200-300 条记录,您不想在列表中每 50 条记录后进行另一个 api 调用。请记住,移动应用程序用户经常上下滚动。您可能会不必要地向您的服务器发送多个请求,这可能会导致过载(取决于用户数量)。
如果您选择选项 2,您可以使用类似JobIntentService
静默获取数据并保存在本地的方法。
这种方法还可以让您的用户与没有互联网(离线模式)的场景进行交互。
TA贡献1820条经验 获得超9个赞
通常,您每次都会从服务器加载 10 个新项目。使用页面参数来确定您需要哪些 10 个项目以及放置它们的位置。
一次加载所有项目可能太昂贵了:延迟可能很长,用户的数据计划也不会满意。显然取决于有多少项目以及它们有什么内容。
添加回答
举报