我有一个后端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
的数据。现在我只拿第一套,它的工作非常好。
如何根据RecyclerView
中的屏幕尺寸在Android
中加载数据。例如:
假设设备hdpi
能够在staggeredGridView
中加载25 RecyclerView
。所以,这里是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
如何动态制作上述流程。这样它适用于所有屏幕尺寸?
BTW这就是我将数据加载到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
发送通知,以便在设备屏幕填满之前再次拨打电话。这是好方法吗?如果是,那么我该如何实现呢?
答案 0 :(得分:1)
你能做的就是一次加载数据超过50,而不是10,这样你就有足够的数据来填充整个显示,如果你的api只允许每个请求获得10个项目,那么你会发出多个请求从不同的线程中将它们添加到适配器,并在所有请求成功完成后刷新视图。因此,这样您就不需要请求所有项目并且有足够的项目可以在任何设备屏幕设置中显示