How do I add items to GWT ListBox in Uibinder .ui.xml template ?

前端 未结 3 1014
北恋
北恋 2020-12-28 17:55

How to add the listbox items using UiBinder?

相关标签:
3条回答
  • 2020-12-28 17:59

    GWT ValueListbox otherwise know as a ComboBox or Dropdown component. Another example that also demonstrates populating the list.

    UiBinder...

    <g:ValueListBox ui:field="subCategory"/> 
    

    Editor...

    @UiField(provided = true)
    ValueListBox<String> subCategory = new ValueListBox<String>(
      new Renderer<String>() {
    
        @Override
        public String render(String object) {
          String s = "Cats";
          if (object != null) {
            s = object.toString();
          }
          return s;
        }
    
        @Override
        public void render(String object, Appendable appendable)
            throws IOException {
          render(object);
        }
    
    });
    

    Constructor...

    List<String> values = new ArrayList<String>();
    values.add("Animal Shelters and Rescues");
    values.add("Birds");
    values.add("Cats");
    values.add("Dogs");
    values.add("Other Pets");
    values.add("Rabbits");
    subCategory.setAcceptableValues(values);
    
    0 讨论(0)
  • 2020-12-28 18:18

    This is a listbox of translations of an enumeration, I suppose this also works for a listbox with string values (version of GWT: 2.1.0)

    You only need the renderer for translating the enumeration values.

    //UI XML

     <g:ValueListBox ui:field="requesterType"/> 
    

    //JAVA CODE

     @UiField(provided = true)
     ValueListBox<RequesterType> requesterType = new ValueListBox<RequesterType>(requesterTypeRenderer);
    
     static EnumRenderer<RequesterType> requesterTypeRenderer = new EnumRenderer<RequesterType>();
    
     public Constructor() {
         requesterTypeRenderer.setEmptyValue(Translations.translateEmptyValue(RequesterType.class));
         requesterType.setAcceptableValues(Arrays.asList(EnumUtil.getRequesterTypes()));
     }
    

     /**
      * Translates enum entries. Use setEmptyValue() if you want to have a custom empty value. Default empty value is "".
      * 
      * @param <T>
      *            an enumeration entry which is to be registered in {@link Translations}
      */
    
    public class EnumRenderer<T extends Enum<?>> extends AbstractRenderer<T> {
    
       private String emptyValue = "";
    
       @Override
       public String render(T object) {
           if (object == null)
               return emptyValue;
           return Translations.translate(object);
       }
    
       public void setEmptyValue(String emptyValue) {
           this.emptyValue = emptyValue;
       }
    
    }
    
    0 讨论(0)
  • 2020-12-28 18:21

    It is possible since february 2011 version:

    http://code.google.com/p/google-web-toolkit/issues/detail?id=4654

    Following this patch you are now able to add items following this syntax:

    <g:ListBox>
      <g:item value='1'>
        first item
      </g:item>
      <g:item value='2'>
        second item
      </g:item>
    </g:ListBox>
    
    0 讨论(0)
提交回复
热议问题