Necesito agregar un control listbox /combobox que permite al usuario elegir varios valores.

Sé que hay uno que ya está disponible en la API de GWT
ListBox
con isMultipleSelect() establece en true. Pero no estoy recibiendo de manera directa para obtener todos los seleccionados reocrds del cuadro de lista.

Algunos tutoriales en google, sugeesting implementar ChangeHandler‘s onChangemétodo.

Creo que debe haber alguna otra manera.

Los punteros se agradece.

4 Comentarios

  1. 3

    Crear su propia subclase de ListBox ofrece un método como

    public LinkedList<Integer> getSelectedItems() {
        LinkedList<Integer> selectedItems = new LinkedList<Integer>();
        for (int i = 0; i < getItemCount(); i++) {
            if (isItemSelected(i)) {
                selectedItems.add(i);
            }
        }
        return selectedItems;
    }

    La GWT API no ofrece una manera directa.

    • Yo estaba pensando en algo como esto.. pero no por la creación de la subclase. Me gustó esta. Gracias..
  2. 4

    Usted puede ir a través de los elementos de la ListBox y llame a isItemSelected(int) para ver si el elemento está seleccionado.

    • +1 porque este es mencionada en el javadoc de getSelectedIndex(): Si se seleccionan varios elementos, este método devuelve el primer elemento seleccionado (isItemSelected(int)) puede ser utilizada para la consulta de los elementos individuales).
    • para ello necesito para recorrer toda la lista y comprobación de la misma. Que yo no quiero, prefiero
    • Asimismo, mencionó que.. «Si se seleccionan varios elementos, este método devuelve el primer elemento seleccionado»
    • Exactamente. Y la 2ª parte de la doc significa que usted tendrá que usar getSelectedIndex() por más de un elemento seleccionado.
    • Es por eso que se sugiere para utilizar la función changehandler’. La tercera opción podría ser la de extender el control ListBox de la manera que usted desea, pero no vale la pena
  3. 2

    Si usted no desea crear una subclase de la listbox, a continuación se muestra cómo obtener los elementos seleccionados desde el exterior:

    public void getSelectedItems(Collection<String> selected, ListBox listbox) {
            HashSet<Integer> indexes = new HashSet<Integer>();
            while (listbox.getSelectedIndex() >= 0) {
                int index = listbox.getSelectedIndex();
                listbox.setItemSelected(index, false);
                String selectedElem = listbox.getItemText(index);
                selected.add(selectedElem);
                indexes.add(index);
            }
            for (Integer index : indexes) {
                listbox.setItemSelected(index, true);
            }
        }

    Después de que se ha ejecutado el método seleccionado de la colección contendrá los elementos seleccionados.

    • Gracias por la respuesta. La pregunta es más de un año de edad y ya no trabajo en GWT
    • +1. Mejor que recorrer toda la lista!!
  4. 0

    Tienes que recorrer todos los elementos de la ListBox. El único atajo es recorrer desde el primer elemento seleccionado mediante getSelectedItem() que devolver el primer elemento seleccionado en selección múltiple ListBox.

    public List<String> getSelectedValues() {
        LinkedList<String> values = new LinkedList<String>();
        if (getSelectedIndex() != -1) {
            for (int i = getSelectedIndex(); i < getItemCount(); i++) {
                if (isItemSelected(i)) {
                    values.add(getValue(i));
                }
            }
        }
        return values;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here