实现的效果图如下:
一、页面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/model_toolbar" />
<!-- 报表内容展示 --->
<LinearLayout
android:orientation="vertical"
android:id="@+id/contentView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
</LinearLayout>
</LinearLayout>
二、初始化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<Map<String, Object>> data)
{
mTableDatas.clear();
//表头
ArrayList<String> mfristData = new ArrayList<String>();
mfristData.add("日期");
mfristData.add("微信");
mfristData.add("支付宝");
mfristData.add("一卡通");
mfristData.add("合计");
mTableDatas.add(mfristData);
for (int i = 0; i < data.size(); i++) {
ArrayList<String> mRowDatas = new ArrayList<String>();
//数据填充
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<ArrayList<String>> mTableDatas) {
mLockTableView.setTableDatas(mTableDatas);
mXRecyclerView.refreshComplete();
}
@Override
public void onLoadMore(final XRecyclerView mXRecyclerView, final ArrayList<ArrayList<String>> 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用于数据展示还不错,但如果是要加点击事件,感觉会不好弄,这个后续有用到会补上。
版权声明:本文为u013254241原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。