RecyclerView用多层级TreeView,如果层级比较少推荐使用Brvah。直接上图
引入:
compile 'com.kanade:treeadapter:0.1.0'
Json例子结构
[
{
"id": 1,
"title": "A1",
"level": 1,
"pid": 0
},
{
"id": 2,
"title": "B1",
"level": 2,
"pid": 1
},
{
"id": 3,
"title": "C1",
"level": 3,
"pid": 2
},
{
"id": 4,
"title": "C2",
"level": 3,
"pid": 2
},
{
"id": 5,
"title": "C3",
"level": 3,
"pid": 2
},
{
"id": 6,
"title": "B2",
"level": 2,
"pid": 1
},
{
"id": 7,
"title": "C4",
"level": 3,
"pid": 6
},
{
"id": 8,
"title": "C5",
"level": 3,
"pid": 6
},
{
"id": 9,
"title": "D1",
"level": 4,
"pid": 5
},
{
"id": 10,
"title": "E1",
"level": 5,
"pid": 9
}
]
使用:
public class User implements RvTree{
...
}
Type type = new TypeToken<List<User>>(){}.getType();
List<User> list = new Gson().fromJson(testStr, type);
// TreeAdapter<User> adapter = new TreeAdapter<>(this, list);
TreeAdapter<User> adapter = new TreeAdapter<>(this);
// 若不在初始化时指定数据,则会等到执行setNodes时才会有数据
adapter.setNodes(list);
recyclerview.setAdapter(adapter);