仮想フォルダ
「仮想フォルダ」として扱うということツリーに属さないデータを「Invisible Root」や「仮想フォルダ (null parentId)」として持たせる。
UI では フォルダ群 と 直下メモ群 を同じリスト(ツリー)に流し込む。
実装的には フォルダとメモを共通インターフェイスで扱うようにするのがポイント。
sealed class TreeItem {
data class Folder(val id: Int, val name: String, val children: List
data class Memo(val id: Int, val title: String) : TreeItem()
}
こうすれば、ツリー外データ(A,B)の表示も
- メモA
- メモB
- フォルダ1
- メモC
- フォルダ2
- メモD
のように自然にツリーに混ぜられます。