在GWT中选择列表框下拉项

时间:2013-02-25 20:56:40

标签: gwt listbox

我有一个GWT视图,我可以从中获取下拉列表的值并将其存储在数据库中。下拉列表的值为“一”,“两”,“三”。当我回到相同的视图并且我在DB中存储了“Two”时,我希望“Two”成为所选项目。然而,我现在能够让这个工作的唯一方法是迭代列表框中的每个项目以找到匹配的项目,然后将其设置为所选项目。有没有更好的方法来实现这一目标?我不想保存选定的索引。

1 个答案:

答案 0 :(得分:1)

我建议你扩展ListBox并实现TakesValue接口。在这个类中维护一个list变量,它保存ListBox中的所有项。 setValue和getValue应该类似于以下代码片段 -

private List<String> listItems = new ArrayList<String>();

public class MyListBox extends ListBox implements TakesValue<String>
{
         public void setValue( String value )
         {
        if ( listItems.size() > 0 )
        {
            int valueIndex = 0;
            if ( listItems.contains( value ) )
            {
                valueIndex = listItems.indexOf( value );
                this.value = value;
            }
            setItemSelected( valueIndex, true );
        }
        }

        public String getValue()
        {
        int selectedIndex = super.getSelectedIndex();
        String value = null;
        if ( selectedIndex >= 0 )
        {
            value = super.getValue( selectedIndex );
            if ( "null".equals( value ) )
            {
                value = null;
            }
        }

        return value;
        }

        public void setOptions(List<String> options)
        {
              listItems.clear();
              listItems.addAll( items );
              for ( String item : listItems )
              {
                    addItem( item, item );
              }
        }
}

现在只需要从视图java文件中执行listBox.setValue(value)方法调用。在此之前必须设置选项。