好的,我需要在UiBinder中使用很多ListBox。
好的,在View.ui.xml文件中:
<g:ListBox ui:field='listBox1' visibleItemCount='3' >
<g:item value='1'> Car </g:item>
<g:item value='2'> Car2 </g:item>
<g:item value='3'> Car3 </g:item>
//more item
</g:ListBox>
<g:ListBox ui:field='listBox2' visibleItemCount='3' >
<g:item value='1'> Bike </g:item>
<g:item value='2'> Bike2 </g:item>
<g:item value='3'> Bike3 </g:item>
//more item
</g:ListBox>
// more ui binder ListBox here
现在我只想setMultipleSelect
使用某些ListBox,因此我可以执行类似<g:ListBox ui:field='listBox2' visibleItemCount='3' multipleSelect="true" >
之类的操作,它可以正常运行但setMultipleSelect(boolean multiple)
已被弃用,Google表示:
@Deprecated public void setMultipleSelect(boolean multiple)
已过时。使用ListBox(布尔值)来设置此列表是否允许 多项选择。注意:启用多个的首选方法 列表框中的选择是使用ListBox(布尔)构造函数。 在Internet Explorer 6.0上使用此方法可能会导致虚假失败。
所以这意味着我们不使用setMultipleSelect
但使用构造函数ListBox(boolean)
来设置MultipleSelection,所以这是我在View.java中所做的
@UiField ListBox listBox1;
@UiField ListBox listBox2;
@UiFactory ListBox makeListBox1(){
listBox1=new ListBox(true);
return listBox1;
}
但是,上面的代码对所有ListBox(listBox1,listBox2等)应用ListBox(true)
。我不希望所有ListBox都有MultipleSelection
cos,其他一些ListBox需要single selection only
。
为什么@UiFactory ListBox makeListBox1()
方法会影响所有ListBoxes&amp;怎么解决?
不确定provided=true
可以提供帮助吗?
答案 0 :(得分:3)
尝试provided=true
:
@UiField(provided = true) ListBox listBox1;
public MyClass() {
listBox1=new ListBox(true);
initWidget(uiBinder.createAndBindUi(this));
}
它必须解决你的问题
答案 1 :(得分:1)
不考虑方法的名称,只考虑返回类型,因此它用于当前模板中具有该类型的所有小部件。如果你想要某些字段的特定实例,那么正如Maksym所说,只需使用provided=true
,或者你可以将参数传递给@UiFactory
方法,这样它就可以调整它的行为(但这意味着你必须把它放到你的ui.xml中所有列表框的参数然后)。
但是请注意,setMultipleSelect
已在GWT 2.6中被弃用,现在IE6支持正在落日。