use*_*108 6 user-interface go fyne
法恩初学者在这里。
\n我正在尝试解决一个简单的用例,但没有在文档中找到任何解决方案:在 Fyne 中,如何拥有一个 Table 小部件,并将其数据绑定到数据源?
\n换句话说,我们binding.BindStringList 在文档中有,它允许绑定字符串列表\xe2\x80\xa6
data := binding.BindStringList(\n &[]string{"Item 1", "Item 2", "Item 3"},\n)\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\xa6我正在寻找类似的东西,它允许绑定结构列表而不是字符串。例如,待办事项表:
\ntype Todo struct {\n UserID int `json:"userId,omitempty"`\n ID int `json:"id,omitempty"`\n Title string `json:"title,omitempty"`\n Completed bool `json:"completed,omitempty"`\n}\nRun Code Online (Sandbox Code Playgroud)\n如果不可能,对您来说最好的解决方法是什么?
\n好吧,按照安迪的建议,我尝试了这个:
\nvar data []Todo\n\nstringData := `[{"userId":1,"id":1,"title":"delectus aut autem"},{"userId":1,"id":2,"title":"quis ut nam facilis et officia qui"}]`\njson.Unmarshal([]byte(stringData), &data)\n\nvar bindings []binding.DataMap\n\nfor _, todo := range data {\n bindings = append(bindings, binding.BindStruct(&todo))\n}\n\nlist := widget.NewTable(\n func() (int, int) {\n return len(bindings), 4\n },\n func() fyne.CanvasObject {\n return widget.NewLabel("wide content")\n },\n func(i widget.TableCellID, o fyne.CanvasObject) {\n title, _ := bindings[i.Row].GetItem("Title")\n log.Println(title)\n o.(*widget.Label).SetText(title)\n }\n)\nRun Code Online (Sandbox Code Playgroud)\n我无法访问元素的实际值(即标题)。你能帮忙吗?
\n小智 4
不幸的是,目前还没有数据绑定Table小部件。在 v2.1 中,我们计划添加binding.BindMapList将传递给NewTableWithData. 在即将发布的版本中。
在此之前,您可以维护一个项目切片binding.DataMap并访问其中的项目以绑定表更新回调方法内的各个项目。