在 Go Fyne 中绑定 Table 数据
Binding Table data in Go Fyne
这里是 Fyne 初学者。
我正在尝试解决一个简单的用例,但没有在文档中找到任何解决方案:在 Fyne 中,如何拥有一个 Table 小部件,其数据绑定到数据来源?
换句话说,我们有 binding.BindStringList
in the docs,它允许绑定字符串列表…
data := binding.BindStringList(
&[]string{"Item 1", "Item 2", "Item 3"},
)
…我正在寻找类似的东西,它允许 绑定结构列表 而不是字符串。例如,一个 table 的待办事项:
type Todo struct {
UserID int `json:"userId,omitempty"`
ID int `json:"id,omitempty"`
Title string `json:"title,omitempty"`
Completed bool `json:"completed,omitempty"`
}
如果不可能,什么是最适合您的解决方法?
嗯,按照 Andy 的建议,我尝试了这个:
var data []Todo
stringData := `[{"userId":1,"id":1,"title":"delectus aut autem"},{"userId":1,"id":2,"title":"quis ut nam facilis et officia qui"}]`
json.Unmarshal([]byte(stringData), &data)
var bindings []binding.DataMap
for _, todo := range data {
bindings = append(bindings, binding.BindStruct(&todo))
}
list := widget.NewTable(
func() (int, int) {
return len(bindings), 4
},
func() fyne.CanvasObject {
return widget.NewLabel("wide content")
},
func(i widget.TableCellID, o fyne.CanvasObject) {
title, _ := bindings[i.Row].GetItem("Title")
log.Println(title)
o.(*widget.Label).SetText(title)
}
)
我无法访问我的元素(即标题)的实际值。你能帮忙吗?
遗憾的是,当前没有数据绑定 Table
小部件。
在 v2.1 中,我们计划添加将传递给 NewTableWithData
的 binding.BindMapList
。在即将发布的版本中。
在那之前,您可以维护 binding.DataMap
项的切片并访问其中的项以绑定 Table 更新回调方法中的各个项。
这里是 Fyne 初学者。
我正在尝试解决一个简单的用例,但没有在文档中找到任何解决方案:在 Fyne 中,如何拥有一个 Table 小部件,其数据绑定到数据来源?
换句话说,我们有 binding.BindStringList
in the docs,它允许绑定字符串列表…
data := binding.BindStringList(
&[]string{"Item 1", "Item 2", "Item 3"},
)
…我正在寻找类似的东西,它允许 绑定结构列表 而不是字符串。例如,一个 table 的待办事项:
type Todo struct {
UserID int `json:"userId,omitempty"`
ID int `json:"id,omitempty"`
Title string `json:"title,omitempty"`
Completed bool `json:"completed,omitempty"`
}
如果不可能,什么是最适合您的解决方法?
嗯,按照 Andy 的建议,我尝试了这个:
var data []Todo
stringData := `[{"userId":1,"id":1,"title":"delectus aut autem"},{"userId":1,"id":2,"title":"quis ut nam facilis et officia qui"}]`
json.Unmarshal([]byte(stringData), &data)
var bindings []binding.DataMap
for _, todo := range data {
bindings = append(bindings, binding.BindStruct(&todo))
}
list := widget.NewTable(
func() (int, int) {
return len(bindings), 4
},
func() fyne.CanvasObject {
return widget.NewLabel("wide content")
},
func(i widget.TableCellID, o fyne.CanvasObject) {
title, _ := bindings[i.Row].GetItem("Title")
log.Println(title)
o.(*widget.Label).SetText(title)
}
)
我无法访问我的元素(即标题)的实际值。你能帮忙吗?
遗憾的是,当前没有数据绑定 Table
小部件。
在 v2.1 中,我们计划添加将传递给 NewTableWithData
的 binding.BindMapList
。在即将发布的版本中。
在那之前,您可以维护 binding.DataMap
项的切片并访问其中的项以绑定 Table 更新回调方法中的各个项。