gwt - GWT UiBinder 使用自定义项目小部件创建自定义列表小部件
问题描述
我正在创建自定义小部件,其中包含复选框、名字、姓氏标签,我称之为 PersonItem。
<g:HorizontalPanel verticalAlignment="middle">
<g:CheckBox ui:field="isSelected" />
<g:Label ui:field="firstName" text="placeholder" />
<g:Label ui:field="lastName" text="placeholder" />
</g:HorizontalPanel>
我想做的是创建另一个名为 PersonList 的小部件,它将包含所有 PersonItemsList<PersonItem>
PersonList 视图将包含
@UiField
List<PersonItem> personItems;
但不幸的是,我不知道如何为文件中的这种字段制作 uiBinder xmlPersonList.ui.xml
文件。甚至可能吗?
除了评论中提出的问题:我想将 PersonList 用作标签
<p:PersonList ui:field="list" />
并且 PersonList 将在加载主演示者时提供数据。
解决方案
正如@Marc Ströbel建议的那样,您可以使用它CellList
来管理您的数据列表。作为未来的改进,您可以轻松地将寻呼机添加到此类列表中。
并且您可以使用任何容器进行CellList
. 您只需要覆盖单元格的 ( AbstractCell
's)render()
方法。
示例代码(作为我使用的容器VerticalPanel
):
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel>
<g:VerticalPanel ui:field="container" />
</g:HTMLPanel>
</ui:UiBinder>
public class PersonList extends Composite {
private static PersonListUiBinder uiBinder = GWT.create(PersonListUiBinder.class);
interface PersonListUiBinder extends UiBinder<Widget, PersonList> {}
@UiField
VerticalPanel container;
private CellList<PersonData> list;
public PersonList() {
initWidget(uiBinder.createAndBindUi(this));
list = new CellList<PersonData>(new AbstractCell<PersonData>() {
@Override
public void render(Context context, PersonData value, SafeHtmlBuilder sb) {
container.add(new PersonItem(value));
}
});
}
public void setData(List<PersonData> values) {
container.clear();
list.setRowData(values);
}
}
我假设人员数据(名字、姓氏等)存储在PersonData
类中。
现在您可以PersonList
随心所欲地使用小部件UiBinder
:
<p:PersonList ui:field="list" />
推荐阅读
- ruby-on-rails - 将 eventbrite gem 添加到我的 ruby on rails 网站
- server - 将域指向服务器 IP:A 类就足够了吗?
- c# - 为什么刚体播放器控制器不工作?我无法移动播放器
- r - 将图例外的图例移到底部左侧(在 R 中)
- python - 矩阵, np.transpose
- macos - Bazel 向 stabe-status.txt 发出错误的主机名
- node.js - 使用 React 在 Chart.js 中显示来自 Node.js 的 Json
- excel - 多个 BeforeRightClick 和正常右键单击
- regex - Bash 脚本 - 比较上次修改日期
- python - 凯撒密码,Python 3,新程序员