TreeRecycleView
1.エンティティクラスのデータ
//
private int level;
//状態、開く、閉じる
private boolean isOpen;
//現在の行データ
private HashMap<String, String> obj;
//現在の行の子データ
private List<TreeItem> child;
エンティティクラスのデータには、階層、開閉状態、現在の行のデータ、現在の行のサブデータが含まれます。
2.データの初期化
// 第一レベルのデータ初期化
ArrayList<TreeItem> list = new ArrayList<>();
TreeItem treeItem0 = getTreeItem(0, "FirstLevel0");
TreeItem treeItem1 = getTreeItem(0, "レイヤー1");
TreeItem treeItem2 = getTreeItem(0, "FirstLayer2");
list.add(treeItem0);
list.add(treeItem1);
list.add(treeItem2);
// 第2レベルのデータ初期化
ArrayList<TreeItem> list0_0 = new ArrayList<>();
TreeItem treeItem0_0 = getTreeItem(1, "レイヤー2 0");
TreeItem treeItem0_1 = getTreeItem(1, "レイヤー2 1");
TreeItem treeItem0_2 = getTreeItem(1, "レイヤー2");
list0_0.add(treeItem0_0);
list0_0.add(treeItem0_1);
list0_0.add(treeItem0_2);
treeItem0.addChilds(list0_0);
// レイヤ3データの初期化
ArrayList<TreeItem> list0_0_0 = new ArrayList<>();
TreeItem treeItem0_0_0 = getTreeItem(2, "レイヤー3 0");
TreeItem treeItem0_0_1 = getTreeItem(2, "レイヤー3 1");
TreeItem treeItem0_0_2 = getTreeItem(2, "レイヤー3 2");
list0_0_0.add(treeItem0_0_0);
list0_0_0.add(treeItem0_0_1);
list0_0_0.add(treeItem0_0_2);
treeItem0_0.addChilds(list0_0_0)
treeAdapter.setDatas(list);
データは1レイヤーずつ初期化され、最初のレイヤーを初期化し、次のレイヤーがある場合は2番目のレイヤーを最初のレイヤーにペグします。
3.TreeAdapterを継承し、onCreateViewHolderメソッドとgetItemViewTypeメソッドを実装し、複数のレイアウトやスタイルを実現することができ、また、独立したアクションの様々な行うことができますまたはネットワークからデータの次の層を取得するには、スケーラビリティは非常に強力であり、必要に応じて設定することができます。
if (model.isOpen()){
doClose(position, model);
}else{
doOpen(position, model);
}
上記のコードは、ステートを通過し、アイテムがクリックされたときにdoCloseまたはdoOpenを呼び出す重要なコードで、データが正しく設定されている限り、親クラスは自動的にスムーズなアニメーションで展開とクローズを実装します。
皆さんの勉強や仕事に役立つことを願っています。