RecyclerView实现表格样式,而自定义的一个LayoutManager。用LayoutManager实现表格,与平时用HorizontalScrollView嵌套RecyclerView来实现表格的区别就是:
3、LayoutManager实现表格,每一格的控件都会复用。而我们知道用HorizontalScrollView嵌套RecyclerView时,只有垂直滑动,每一行会进行复用,而水平滑动没有复用一说,因为水平滑动滑的是HorizontalScrollView。
4、LayoutManager实现表格,使用有一个前提,就是你的这个表格必须每一格的宽高要一样。如果你的表格不是每一格宽高一样,如有一些列要比较宽一点,这类需求的话,你还是要用回以前的嵌套方法来实现;
4、LayoutManager实现表格,现在也可以不同列或不同行根据类型使用不同的布局。但有个限制,不同列使用不同的布局时,每个布局的高度必须一样,这个应该好理解,不同列你表格的宽可以不一样,但作为同一行每个item的高肯定一样,要不你的表格都变瀑布型了。同理不同行多类型的每个item的布局宽必须一样。
allprojects{repositories{... maven{url 'https://jitpack.io' } } } dependencies{// android implementation 'com.github.dnwalter:FormLayoutManager:v4.2' // 适用androidx,想查看androidx的代码可以切换到masterX分支 implementation 'com.github.dnwalter:FormLayoutManager:v4.2x' } FormLayoutManager layoutManager = new FormLayoutManager(8); mRecyclerView.setLayoutManager(layoutManager); public class MonsterHAdapter extends BaseHFormAdapter<Monster>{// 3.0之前的版本写法 @Override protected String[] getRowDatas(Monster model){return new String[]{model.getName(), model.getAttribute(), model.getLv(), model.getAtk(), model.getDef(), model.getRace(), model.getType1(), model.getType2()}} // 3.0以及3.0以后的写法 @Override protected String getRowData(Monster model, int index){String result = ""; switch (index){case 0: result = model.getName(); break; case 1: result = model.getAttribute(); break; …… } return result} @Override public int getColumnCount(){return 8} }