微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Go Fyne 中的绑定表数据

如何解决Go Fyne 中的绑定表数据

这里是 Fyne 初学者。

我正在尝试解决一个简单的用例,但在文档中没有找到任何解决方案:在 Fyne,如何拥有一个 Table 小部件,并将其数据绑定到数据源?

换句话说,我们有 binding.BindStringList in the docs,它允许绑定一个字符串列表......

data := binding.BindStringList(
    &[]string{"Item 1","Item 2","Item 3"},)

...我正在寻找类似的东西,它允许绑定结构列表而不是字符串。例如,一个待办事项表:

type Todo struct {
  UserID    int    `json:"userId,omitempty"`
  ID        int    `json:"id,omitempty"`
  Title     string `json:"title,omitempty"`
  Completed bool   `json:"completed,omitempty"`
}

如果不可能,对您来说最好的解决方法是什么?


好吧,按照安迪的建议,我尝试了这个:

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 中,我们计划添加将传递给 binding.BindMapListNewTableWithData。在即将发布的版本中。

在此之前,您可以维护 binding.DataMap 项的切片并访问其中的项以绑定表更新回调方法中的各个项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。