LockTableView自定義表格

LockTableView

自定義表格,可鎖定雙向表頭,自適應列寬,自適應行高,下拉刷新,上拉加載,鏈式調用
java

效果展現

Github

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

工程集成說明

  • 第一步
//在工程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做者:郭翰林
  • 注:有定製化需求本身下源碼根據本身的需求改動,不要期望別人給你實現,這樣永遠沒有成長!
  • 本控件實現沒有難度,只要靜心看代碼都能看的懂。我只提供最基礎的功能,儘可能知足大部分的開發需求。

三、關於做者

掘金:juejin.cn/user/178526…github

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

GitHub:github.com/RmondJonemarkdown

微信圖片_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. 複製代碼
相關文章
相關標籤/搜索