# GridPagerSnapHelperNew
**Repository Path**: netral/grid-pager-snap-helper-new
## Basic Information
- **Project Name**: GridPagerSnapHelperNew
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-10-27
- **Last Updated**: 2021-10-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[  ](https://bintray.com/hanhailong/maven/gridpagersnaphelper/0.0.3)
[](https://travis-ci.org/hanhailong/GridPagerSnapHelper)
# GridPagerSnapHelper
A powerful tools to impl grid paging layout by RecyclerView,support horizontal and vertical page
# 效果图

# vertical orientation

带有Indicator的

# Download
## Jcenter(Recommend)
```
compile 'com.hhl:gridpagersnaphelper:1.0.0'
// Optional , config indicator
compile 'com.hhl:recyclerviewindicator:1.0.0'
```
## Maven
```
com.hhl
gridpagersnaphelper
1.0.0
pom
// Optional , config indicator
com.hhl
recyclerviewindicator
1.0.0
pom
```
# Usage:
for example:
```
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
//setLayoutManager
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, row, LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(gridLayoutManager);
//attachToRecyclerView
GridPagerSnapHelper gridPagerSnapHelper = new GridPagerSnapHelper();
gridPagerSnapHelper.setRow(row).setColumn(column);
gridPagerSnapHelper.attachToRecyclerView(recyclerView);
int screenWidth = ScreenUtils.getScreenWidth(this);
int itemWidth = screenWidth / column;
//transform data list
List dataList = DataSourceUtils.getDataSource();
dataList = GridPagerUtils.transformAndFillEmptyData(
new OneRowDataTransform(column), dataList);
//setAdapter
RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, dataList, itemWidth);
recyclerView.setAdapter(adapter);
//indicator
CirclePageIndicator indicator = (CirclePageIndicator) findViewById(R.id.first_page_indicator);
indicator.setRecyclerView(firstRV);
//Note: pageColumn must be config
indicator.setPageColumn(column);
indicator.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
```
**Step 1. setLayoutManager:**
You'd better set a horizontal direction *GridLayoutManager*
**Step 2. RecyclerView attach to GridPagerSnaperHelper**
```
GridPagerSnapHelper gridPagerSnapHelper = new GridPagerSnapHelper();
gridPagerSnapHelper.setRow(row).setColumn(column);
gridPagerSnapHelper.attachToRecyclerView(recyclerView);
```
Here,you must set row and column
**Step 3. transform data list**
if your src data is *dataList*,you must transform it to dst data
```
GridPagerUtils.transformAndFillEmptyData(
new OneRowDataTransform(column), dataList);
```
Here,I have provided three transform order functions
1. OneRowDataTransform
mapping one row,n column
2. TwoRowDataTransform
mapping two row,n column
3. ThreeRowDataTransform
mapping three row,n column
You can impl your custom row funcitons by extends **AbsRowDataTransform**
**Step4. (Optional) Config Indicator**
```
CirclePageIndicator indicator = (CirclePageIndicator) findViewById(R.id.first_page_indicator);
indicator.setRecyclerView(firstRV);
//Note: pageColumn must be config
indicator.setPageColumn(column);
indicator.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
```
# Why use AbsRowDataTransform?
In general,horizontal direction GridLayoutManager layout like this:

But,We want is the following case :

so,We need to make a transformation of the data.Here,**AbsRowDataTransform** can meet your needs.
# Author
hanhailong worked in 58同城,A fantastic website
hanhailong.cool@163.com