游戏中实现分页还是很有必要的,无论是背包/商店还是其他一些有列表显示的模块,因为实现分页会给手机减轻不少压力。在这里我先说明,我实现的分页是数据已经全部加载完成了的, 而其分页的作用也就是减轻GPU的压力。(当然,要想将数据也和显示一一对应的话,也是不难实现的,得看情况和项目需求)
我的思路是这样的,既然已经加载了所有分页的数据,那么按显示进行分开的话,所以在每一页的初始元素在整个列表数据的位置以及末尾元素在整个列表的位置 都是有规律地进行变化的。那么,我首先进行的任务的就是根据当前页数去计算该页进行显示的列表的首元素以及末元素在整个数据集的位置了。
在这里我先介绍一下我的页面数字展示是这样定义的:
而数据是已经加载进view里面(看需求,一般这种加载大数据操作是在登录时完成的)的了:
1
2
|
std::map< int, xxx > m_datas;
|
返回当页加载的元素个数(这里定义了一个成员变量是当前页面首元素的place):
1
2
3
4
5
6
7
8
9
10
11
|
int startPlace = 0;
int xxx::repeateNum()
{
int startData = m_pageStarts[0] * DATA_IN_ONE_PAGE;
int endData = (m_pageStarts[0]+1 == m_pageStarts[1] || m_pageStarts[1] == 0)
? m_datas.size() : (m_pageStarts[0]+1) * DATA_IN_ONE_PAGE;
startPlace = startData;
return
endData - startData;
}
|