LockTableView自定義表格

RmondJone發表於2018-02-05

LockTableView

自定義表格,可鎖定雙向表頭,自適應列寬,自適應行高,下拉重新整理,上拉載入,鏈式呼叫

效果展示

LockTableView自定義表格

Github

Github-LockTableView
歡迎大家點贊(Star),你的鼓勵是我前行的動力!我的宗旨:簡單!實用!

工程整合說明

  • 第一步
//在工程gradle檔案裡
allprojects {
    repositories {
        .......
        maven { url 'https://jitpack.io' }
        ......
    }
}
複製程式碼
//如果不在工程gradle檔案里加入,也可以加入模組gradle檔案中
repositories {
    maven {
        url  "https://jitpack.io"
    }
}
複製程式碼
  • 第二步
dependencies {
	compile 'com.github.RmondJone:LockTableView:1.1.2'
}
複製程式碼

API使用說明


final LockTableView mLockTableView = new LockTableView(this, mContentView, mTableDatas);
Log.e("表格載入開始", "當前執行緒:" + Thread.currentThread());
mLockTableView.setLockFristColumn(true) //是否鎖定第一列
      .setLockFristRow(true) //是否鎖定第一行
      .setMaxColumnWidth(100) //列最大寬度
      .setMinColumnWidth(60) //列最小寬度
      .setMinRowHeight(20)//行最小高度
      .setMaxRowHeight(60)//行最大高度
      .setTextViewSize(16) //單元格字型大小
      .setCellPadding(15)//設定單元格內邊距(dp)
      .setColumnWidth(1,60) //設定指定列文字寬度(從0開始計算,寬度單位dp)
      .setFristRowBackGroudColor(R.color.table_head)//表頭背景色
      .setTableHeadTextColor(R.color.beijin)//表頭字型顏色
      .setTableContentTextColor(R.color.border_color)//單元格字型顏色
      .setNullableString("N/A") //空值替換值
      .setTableViewListener(new LockTableView.OnTableViewListener() {
          //設定橫向滾動監聽
          @Override
          public void onTableViewScrollChange(int x, int y) {
              Log.e("滾動值","["+x+"]"+"["+y+"]");
          }
      })
      .setTableViewRangeListener(new LockTableView.OnTableViewRangeListener() {
                    //設定橫向滾動邊界監聽
                    @Override
                    public void onLeft(HorizontalScrollView view) {
                        Log.e("滾動邊界","滾動到最左邊");
                    }

                    @Override
                    public void onRight(HorizontalScrollView view) {
                        Log.e("滾動邊界","滾動到最右邊");
                    }
                })
      .setOnLoadingListener(new LockTableView.OnLoadingListener() {
          //下拉重新整理、上拉載入監聽
          @Override
          public void onRefresh(final XRecyclerView mXRecyclerView, final ArrayList<ArrayList<String>> mTableDatas) {
              Log.e("表格主檢視",mXRecyclerView);
              Log.e("表格所有資料",mTableDatas);
              //如需更新表格資料呼叫,部分重新整理不會全部重繪
              mLockTableView.setTableDatas(mTableDatas);
              //停止重新整理
              mXRecyclerView.refreshComplete();
          }

          @Override
          public void onLoadMore(final XRecyclerView mXRecyclerView, final ArrayList<ArrayList<String>> mTableDatas) {
              Log.e("表格主檢視",mXRecyclerView);
              Log.e("表格所有資料",mTableDatas);
              //如需更新表格資料呼叫,部分重新整理不會全部重繪
              mLockTableView.setTableDatas(mTableDatas);
              //停止重新整理
              mXRecyclerView.loadMoreComplete();
              //如果沒有更多資料呼叫
              mXRecyclerView.setNoMore(true);
          }
      })
      .setOnItemClickListenter(new LockTableView.OnItemClickListenter() {
          @Override
          public void onItemClick(View item, int position) {
              Log.e("點選事件",position+"");
          }
      })
      .setOnItemLongClickListenter(new LockTableView.OnItemLongClickListenter() {
          @Override
          public void onItemLongClick(View item, int position) {
             Log.e("長按事件",position+"");
          }
      })
      .setOnItemSeletor(R.color.dashline_color)//設定Item被選中顏色
      .show(); //顯示錶格,此方法必須呼叫
mLockTableView.getTableScrollView().setPullRefreshEnabled(true);
mLockTableView.getTableScrollView().setLoadingMoreEnabled(true);
mLockTableView.getTableScrollView().setRefreshProgressStyle(ProgressStyle.SquareSpin);
//屬性值獲取
Log.e("每列最大寬度(dp)", mLockTableView.getColumnMaxWidths().toString());
Log.e("每行最大高度(dp)", mLockTableView.getRowMaxHeights().toString());
Log.e("表格所有的滾動檢視", mLockTableView.getScrollViews().toString());
Log.e("表格頭部固定檢視(鎖列)", mLockTableView.getLockHeadView().toString());
Log.e("表格頭部固定檢視(不鎖列)", mLockTableView.getUnLockHeadView().toString());

/**
 * 構造方法
 *
 * @param mContext     上下文
 * @param mContentView 表格父檢視
 * @param mTableDatas  表格資料
 */
public LockTableView(Context mContext, ViewGroup mContentView, ArrayList<ArrayList<String>> mTableDatas) {
    this.mContext = mContext;
    this.mContentView = mContentView;
    this.mTableDatas = mTableDatas;
    initAttrs();
}

複製程式碼

目前支援可自定義屬性

/**
 * 是否鎖定首行
 */
private boolean isLockFristRow = true;
/**
 * 是否鎖定首列
 */
private boolean isLockFristColumn = true;
/**
 * 最大列寬(dp)
 */
private int maxColumnWidth;
/**
 * 最小列寬(dp)
 */
private int minColumnWidth;
/**
 * 最大行高(dp)
 */
private int maxRowHeight;
/**
  * 最小行高dp)
  */
private int minRowHeight;
/**
 * 第一行背景顏色
 */
private int mFristRowBackGroudColor;
/**
 * 資料為空時的預設值
 */
private String mNullableString;
/**
 * 單元格字型大小
 */
private int mTextViewSize;
/**
 * 表格頭部字型顏色
 */
private int mTableHeadTextColor;
/**
 * 表格內容字型顏色
 */
private int mTableContentTextColor;
/**
 * 表格橫向滾動監聽事件
 */
private OnTableViewListener mTableViewListener;
/**
 * 表格橫向滾動到邊界監聽事件
 */
private OnTableViewRangeListener mTableViewRangeListener;
/**
 * 表格上拉重新整理、下拉載入監聽事件
 */
private OnLoadingListener mOnLoadingListener;
/**
 * Item點選事件
 */
private OnItemClickListenter mOnItemClickListenter;
/**
 * Item長按事件
 */
private OnItemLongClickListenter mOnItemLongClickListenter;
/**
 * Item選中顏色
 */
private int mOnItemSeletor;
/**
 * 單元格內邊距
 */
private int mCellPadding;


複製程式碼

問題反饋

  • 技術交流群:QQ(264587303)
  • Demo作者:郭翰林
  • 注:有定製化需求自己下原始碼根據自己的需求改動,不要指望別人給你實現,這樣永遠沒有成長!
  • 本控制元件實現沒有難度,只要靜心看程式碼都能看的懂。我只提供最基礎的功能,儘量滿足大部分的開發需求。

3、關於作者

掘金:juejin.im/user/5a2b6b…

簡書:www.jianshu.com/u/7566e4604…

GitHub:github.com/RmondJone

微信圖片_20181024114409.jpg
微信圖片_20181024114416.jpg

License

Copyright (c) 2018 Guohanlin

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
複製程式碼

相關文章