前段时间,收到一个这样的需求,需要实现类似于下图所示的表格,展示一些表格数据。
刚收到这个需求的时候,想的是下面的方案:首先用GridView把表格中的每一项都展示出来,然后再把左边内容相同的item进行合并,不过GridView似乎没有合并的功能,这个方案就被pass掉了。后来就想到用RecyclerView的瀑布流布局来实现这个需求,因为瀑布流布局可以包含不同高度的item,我的大体思路是这样:假设一个单项item的高度为height,则组合项item的高度为n*height+(n-1)*dividerHeight(n为组合项所包含的行数),在定义数据集的时候将每一个item所包含的行数n传入adapter,然后在adapter里通过n产生不同的高度,设置给View即可。
- Activity中RecyclerView的初始化代码
private void init() {
mData.clear();
for (int resId : mTitleST) { //表头数据
mData.add(new ElePriceTableModel(getString(resId), -1));
}
mData.add(new ElePriceTableModel("1~6月", 4));
mData.add(new ElePriceTableModel("0~12", 2));
mData.add(new ElePriceTableModel("0~10", 1));
mData.add(new ElePriceTableModel("0.92", 1, true));
mData.add(new ElePriceTableModel("10~100", 1));
mData.add(new ElePriceTableModel("0.83", 1, true));
mData.add(new ElePriceTableModel("12~24", 2));
mData.add(new ElePriceTableModel("0~10", 1));
mData.add(new ElePriceTableModel("0.99", 1, true));
mData.add(new ElePriceTableModel("10~100", 1));
mData.add(new ElePriceTableModel("1.12", 1, true));
mData.add(new ElePriceTableModel("7~12月", 4));
mData.add(new ElePriceTableModel("0~12", 2));
mData.add(new ElePriceTableModel("0~10", 1));
mData.add(