# SuperTableView
**Repository Path**: ClAndEllen/SuperTableView
## Basic Information
- **Project Name**: SuperTableView
- **Description**: 超强的表格视图
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-11-26
- **Last Updated**: 2020-12-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 0.如何导入?
[](https://www.jitpack.io/#Ellen2018/SuperTableView)
首先你需要在项目的build.gradle中配置以下代码:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }//加上这句即可
}
}
然后你在要使用该库的module中添加以下依赖:
implementation 'com.github.Ellen2018:SuperTableView:x.y.z'
x,y,z是笔者库的版本值,例如:1.2.0
## 1.介绍
此库用来做表格视图,笔者封装了几种适配器,让你像使用RecyclerView一样去使用它,它用来做怎样的表格呢?带有XY轴的都可以做。

当然以上只是带Y轴的表格。详细用法请看下面。
## 2.用法
步骤一:在布局文件种声明控件
- ItemHeight:Item的高度
- ItemWidth:Item的宽度
- ColumnCount:列的个数
- RowCount:行的宽度
- XItemHeight:X轴的高度
- YItemWidth:Y轴的宽度
- isHideX:是否隐藏X轴
- isHideY:是否隐藏Y轴
- isHideXY:是否隐藏XY轴
步骤二:绑定控件,并设置适配器给它,设配器一共有四种,当然你还可以自定义自配器,但是你必须熟悉笔者封装的源码原理,那笔者这里就简单介绍一下这四种适配器:
SuperNoXYTableViewAdapter(无XY轴),SuperXTableViewAdapter(仅仅有X轴),SuperYTableViewAdapter(仅仅有Y轴),SuperXYTableViewAdapter(XY轴都有),接下来就演示一下适配器的代码:
public class TableAdapter extends SuperXTableViewAdapter {
public Context context;
public List xTitles;
public int rowNumber = 20;
public TableAdapter(Context context,List xTitles,List itemTitles){
this.context = context;
this.xTitles = xTitles;
}
public int getRowNumber() {
return rowNumber;
}
public void setRowNumber(int rowNumber) {
this.rowNumber = rowNumber;
}
@Override
protected XItemViewHolder createXViewHolder(int column) {
View view = LayoutInflater.from(context).inflate(R.layout.item_line_table_x,null);
XItemViewHolder xyItemViewHolder = new XItemViewHolder(view);
return xyItemViewHolder;
}
@Override
protected void bindXViewHolder(XItemViewHolder yItemViewHolder, int column) {
}
@Override
protected MyItemViewHolder createTableItemViewHolder(int row, int column) {
View view = LayoutInflater.from(context).inflate(R.layout.item_line_table_x,null);
MyItemViewHolder myItemViewHolder = new MyItemViewHolder(view);
return myItemViewHolder;
}
@Override
protected void bindTableItemViewHolder(MyItemViewHolder myItemViewHolder, int row, int column) {
myItemViewHolder.tv.setText("("+row+","+column+")");
}
//重写可以定义表格的列数
@Override
public int getTableColumn() {
return 22000;
}
//重写可以定义表格的行数
@Override
public int getTableRow() {
return 5;
}
@Override
public void bindAdapter() {
super.bindAdapter();
}
public static class XItemViewHolder extends XYItemViewHolder{
TextView tv;
public XItemViewHolder(View yItemView) {
super(yItemView);
tv = yItemView.findViewById(R.id.tv);
}
}
public static class MyItemViewHolder extends ItemViewHolder {
TextView tv;
public MyItemViewHolder(View yItemView) {
super(yItemView);
tv = yItemView.findViewById(R.id.tv);
}
}
}
从以上的代码可以看出,笔者封装的适配器和RecyclerView的适配器是不是很像呢?没错,笔者的适配器就是按照RecyclerView的适配器进行封装的,为了方便大家很快上手。此外如果你一次性加载过多的表格,那么建议使用延迟加载模式,因为会导致卡顿,用了延迟加载后可解决这个问题。实例代码如下:
tableView.setPagingMode(new PagingMode(true, 20, 20, 10));
PagingMode构造器4个参数的含义分别代表:
- 延迟加载的方向:true为竖直
- 第一次加载数据的个数
- 每次延迟加载的个数
- 滑动到倒数第几个开始延迟加载