利用LockTableView实现可滑动字段的报表数据展示

实现的效果图如下:

利用LockTableView实现可滑动字段的报表数据展示_第1张图片

一、页面布局




    
    
    
    

二、初始化LockTableView数据

  1. 先初始化LockTableView中像素比

private void initDisplayOpinion() {
        DisplayMetrics dm = getResources().getDisplayMetrics();
        DisplayUtil.density = dm.density;
        DisplayUtil.densityDPI = dm.densityDpi;
        DisplayUtil.screenWidthPx = dm.widthPixels;
        DisplayUtil.screenhightPx = dm.heightPixels;
        DisplayUtil.screenWidthDip = DisplayUtil.px2dip(getApplicationContext(), dm.widthPixels);
        DisplayUtil.screenHightDip = DisplayUtil.px2dip(getApplicationContext(), dm.heightPixels);
    }

2. 初始化LockTableView 中内容数据

 private void updateData(List> data)
    {
        mTableDatas.clear();
        //表头
        ArrayList mfristData = new ArrayList();
        mfristData.add("日期");
        mfristData.add("微信");
        mfristData.add("支付宝");
        mfristData.add("一卡通");
        mfristData.add("合计");
        mTableDatas.add(mfristData);
        for (int i = 0; i < data.size(); i++) {
            ArrayList mRowDatas = new ArrayList();
            //数据填充
             mRowDatas.add("201810");
             mRowDatas.add("1.51");
            mRowDatas.add("0.0");
            mRowDatas.add("1.1");
            mRowDatas.add("2.0");
            mTableDatas.add(mRowDatas);
        }
        mLockTableView = new LockTableView(this, linearLayout, mTableDatas);
        Log.e("表格加载开始", "当前线程:" + Thread.currentThread());
        mLockTableView.setLockFristColumn(true) //是否锁定第一列
                .setLockFristRow(true) //是否锁定第一行
//                .setMaxColumnWidth(80) //列最大宽度
                .setMinColumnWidth(60) //列最小宽度
//                .setColumnWidth(1,30) //设置指定列文本宽度
//                .setColumnWidth(2,20)
                .setMinRowHeight(30)//行最小高度
                .setMaxRowHeight(35)//行最大高度
                .setTextViewSize(16) //单元格字体大小
                .setFristRowBackGroudColor(R.color.report_head)//表头背景色
                .setTableHeadTextColor(R.color.report_head_font)//表头字体颜色
                .setTableContentTextColor(R.color.border_color)//单元格字体颜色
                .setCellPadding(8)//设置单元格内边距(dp)
                .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> mTableDatas) {
                        mLockTableView.setTableDatas(mTableDatas);
                        mXRecyclerView.refreshComplete();
                    }

                    @Override
                    public void onLoadMore(final XRecyclerView mXRecyclerView, final ArrayList> mTableDatas) {
                        Log.e("onLoadMore",Thread.currentThread().toString());
                        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.report_select)//设置Item被选中颜色
                .show(); //显示表格,此方法必须调用
        mLockTableView.getTableScrollView().setPullRefreshEnabled(true);
        mLockTableView.getTableScrollView().setLoadingMoreEnabled(true);
        mLockTableView.getTableScrollView().setRefreshProgressStyle(ProgressStyle.SquareSpin);
    }

 3. 导入LockTableView包


dependencies {  
    compile 'com.github.RmondJone:LockTableView:1.1.2'

}

上面就是关键代码,LockTableView用于数据展示还不错,但如果是要加点击事件,感觉会不好弄,这个后续有用到会补上。

你可能感兴趣的:(Android)