Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

一个RecyclerView就可以实现左右上下滑动的表格,并且每个格子的view都会复用,靠的就是这个FormLayoutManager

Notifications You must be signed in to change notification settings

CPLASF1925/FormLayoutManager

Open more actions menu
 
 

Repository files navigation

FormLayoutManager

介绍

RecyclerView实现表格样式,而自定义的一个LayoutManager。用LayoutManager实现表格,与平时用HorizontalScrollView嵌套RecyclerView来实现表格的区别就是:

1、LayoutManager实现表格,由始至终就只有一个RecyclerView,没有多余的嵌套;

2、LayoutManager实现表格,手指滑动的时候可以向任意方向滑动。而以前的方法当你的手指进行水平滑动时,只要手指不松开,是不能进行垂直的滑动的;

3、LayoutManager实现表格,每一格的控件都会复用。而我们知道用HorizontalScrollView嵌套RecyclerView时,只有垂直滑动,每一行会进行复用,而水平滑动没有复用一说,因为水平滑动滑的是HorizontalScrollView。

4、LayoutManager实现表格,使用有一个前提,就是你的这个表格必须每一格的宽高要一样。如果你的表格不是每一格宽高一样,如有一些列要比较宽一点,这类需求的话,你还是要用回以前的嵌套方法来实现;

4、LayoutManager实现表格,现在也可以不同列或不同行根据类型使用不同的布局。但有个限制,不同列使用不同的布局时,每个布局的高度必须一样,这个应该好理解,不同列你表格的宽可以不一样,但作为同一行每个item的高肯定一样,要不你的表格都变瀑布型了。同理不同行多类型的每个item的布局宽必须一样。

还有我只提供了方法,一个表格只能单独不同列多类型或是不同行多类型,不能不同列且不同行多类型(简单一句就是当你选择了不同列多类型的时候,你这个表每一行肯定全部高度相等)。

上面说的区别和注意,我会以博客给大家详细的讲解

导入

1、在最外层目录的build.gradle添加如下maven

allprojects {
    repositories {
	...
	maven { url 'https://jitpack.io' }
    }
}

2、在要使用这个FormLayoutManager的module的build.gradle添加依赖(后面vX.X的版本号,可以根据releases里面最新的版本进行替换)

dependencies {
        implementation 'com.github.dnwalter:FormLayoutManager:v3.0'
}

使用

下面是常用的简单使用的代码(以一个水平表格为例子,我这里说的水平表格指的是以表格每一行为一个实体对象的表格)

FormLayoutManager layoutManager = new FormLayoutManager(8);
mRecyclerView.setLayoutManager(layoutManager);

FormLayoutManager默认要传入一个整型,这个整型代表的是这个表格有多少列。后面RecyclerView可以如常设置adapter,但adapter要继承一个基类

public class MonsterHAdapter extends BaseHFormAdapter<Monster> {

  // 3.0之前的版本写法
  @Override
  protected String[] getRowDatas(Monster model) {
      return new String[]{model.getName(), model.getAttribute(), model.getLv(), model.getAtk(),
              model.getDef(), model.getRace(), model.getType1(), model.getType2()};
  }  

  // 3.0以及3.0以后的写法  
  @Override
  protected String getRowData(Monster model, int index) {
    String result = "";
    switch (index) {
        case 0:
            result = model.getName();
            break;
        case 1:
            result = model.getAttribute();
            break;
       ……
    }

    return result;
}

  @Override
  public int getColumnCount() {
      return 8;
  }
}

其他要重写的方法可看源码或看demo来了解怎么配置布局和数据,主要要重写是上面的两个方法

1、getRowDatas或getRowData,你的实体哪个属性按第一列到最后列设置好

2、getColumnCount,设置这个表格的列数

注:github上alpha分支为getRowDatas,gamma分支为getRowData,版本3.0开始后都换成了getRowData,若想用getRowDatas,可使用3.0以前的版本

以上步骤基本可以水平表格的使用,大家可以看一下源码或demo结合博客了解一下。

About

一个RecyclerView就可以实现左右上下滑动的表格,并且每个格子的view都会复用,靠的就是这个FormLayoutManager

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.