【发布时间】:2015-10-26 12:34:16
【问题描述】:
我有一个后端 API 端点,它在某些集合中返回 JSON。每组包含10 lines of Json。
例如:
curl http://www.something.com?getData=0 将提供 first 10 elements 和 curl http://www.something.com?getData=1 将返回下一组,依此类推。
我正在使用RecyclerView 和StaggeredGridView 从给定的endpoints 加载数据。现在我只取第一组,它工作得很好。
我在寻找什么?
如何根据Android 中的屏幕尺寸在RecyclerView 中加载数据。例如:
假设设备hdpi 可以在RecyclerView 中加载25 个staggeredGridView。所以,这里是endpoints的请求顺序:
http://www.something.com?getData=0 // will fetch 0-10
http://www.something.com?getData=10 // will fetch 11-20
http://www.something.com?getData=10&skip=5 // will fetch 21-25
我怎样才能动态地进行上述过程。这样它就适用于所有屏幕尺寸?
顺便说一句,这就是我将数据加载到 StaggeredGridView 适配器的方式:
mRecyclerView = (RecyclerView) mActivity.findViewById(R.id.staggering_grid);
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
mAdapter = new StaggeredGridAdapter(mContext);
mAdapter.addItems(response);
mRecyclerView.setAdapter(mAdapter);
可能的解决方案
- 如果我知道我需要根据设备填写多少
Grid,那么我可以简单地提出请求,直到我得到数据以填写预期的数字。 - 我还可以使用
Event Bus向Retrofit发送通知,以便在设备屏幕填满之前再次拨打电话。
这是好方法吗?如果是,那么我该如何实现呢?
【问题讨论】:
-
是否可以选择始终获取尽可能多的项目来填满最大的屏幕?就像如果 xxxhpdi 需要 50 个项目来填满屏幕,总是分批获取 50 个?较小的屏幕需要较少地获取数据,而较大的屏幕将有足够的项目来填充视图。
-
不,这不可能。端点将始终一次返回 10 个项目。
-
@TimCastelijns 但是如果我按顺序向 xxxhdpi 发出 5 个请求并一次加载数据呢?
-
很难看出您的问题与 android-layout、android-activity 或 android-recyclerview 有何关系。您是否在询问如何确定在给定特定布局/布局管理器和设备配置的情况下屏幕上可以容纳多少项目?
-
@ataulm 我试图解释它 :) 是的,你说得对,我只是想知道我需要获取多少物品才能让什么设备适合屏幕。我没有布局,它只是一个带有
StaggeredGridView适配器的RecyclerView
标签: android android-layout android-activity android-recyclerview android-screen-support