Как получить наблюдаемое дерево - PullRequest
0 голосов
/ 28 февраля 2020

Я работаю над приложением, которое требует TreeView. Я могу создать древовидное представление, но сталкиваюсь с проблемой динамического обновления древовидного представления на основе изменения базового набора данных.

Классы:

data class Channels(
    val channel: Channel? = null
)

data class Channel(
     val id: String? = null,
     val name: String? = null,
     val parentChannelId: String? = null
)

Список данных:

var channels = observableListOf(
    Channels(channel = Channel(id = "pc1", name = "P Channel 1")),
    Channels(channel = Channel(id = "c11", name = "Child 1-1", parentChannelId = "pc1")),
    Channels(channel = Channel(id = "c12", name = "Child 1-2", parentChannelId = "pc1")),
    Channels(channel = Channel(id = "c121", name = "Child 1-2-1", parentChannelId = "c12")),
    Channels(channel = Channel(id = "c111", name = "Child 1-1-1", parentChannelId = "c11")),
    Channels(
        channel = Channel(
            id = "c1111",
            name = "Child 1-1-1-1",
            parentChannelId = "c111"
        )
    ),
    Channels(channel = Channel(id = "pc2", name = "P Channel 2")),
    Channels(channel = Channel(id = "pc3", name = "P Channel 3")),
    Channels(channel = Channel(id = "c31", name = "Child 3-1", parentChannelId = "pc3"))
)

Treeview:

treeview<Channels> {                           
    isShowRoot = false                           
    root = TreeItem()
    cellFormat { text = it.channel?.name }
    populate { parent -> 
        if (parent == root) channels.filter { 
            it.channel?.parentChannelId == null 
        } else channels.filter { 
            it.channel?.parentChannelId == parent.value?.channel?.id 
        } 
    }
}

Теперь, когда я изменяю список channels, treeview не обновляется. Я застрял на этом с 3-4 дня. Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...