2 Stimmen

Blackberry - Abrufen von angekreuzten Elementen aus einer Liste mit Kontrollkästchen

Wie können alle angekreuzten Einträge aus einer Liste abgerufen werden?

Ich muss alle ausgewählten (angekreuzten) Elemente aus der Liste erhalten und einen Vektor auffüllen.

Ich erhalte nicht alle ausgewählten Elemente, sondern nur das Element, auf dem der aktuelle Fokus liegt.

Ich implementiere ein Listenfeld mit Kontrollkästchen wie im Knowledgebase-Artikel beschrieben.

Wenn ich getSelection() verwende, wird mir der Index der aktuell markierten Listenzeile zurückgegeben, und nicht alle, die überprüft wurden.

3voto

Maksym Gontar Punkte 22730

Wie ich verstanden habe, ist die Probe How To - Erstellen eines ListFields mit Kontrollkästchen

Dann können Sie Vector zu der Klasse hinzufügen, in der ListFieldCallback implementiert ist:

private Vector _checkedData = new Vector();
public Vector getCheckedItems() {
        return _checkedData;
    }

und aktualisieren Sie drawListRow auf diese Weise:

if (currentRow.isChecked())
{
    if( -1 ==_checkedData.indexOf(currentRow))
        _checkedData.addElement(currentRow);
    rowString.append(Characters.BALLOT_BOX_WITH_CHECK);
}
else
{
    if( -1 !=_checkedData.indexOf(currentRow))
        _checkedData.removeElement(currentRow);
    rowString.append(Characters.BALLOT_BOX);
}

Wenn Sie VerticalFieldManager mit benutzerdefiniertem CheckBoxField verwenden würden, könnten Sie alle Felder auf dem Bildschirm (oder jeden Manager) durchlaufen und prüfen, ob es sich um ein Checkbox-Feld handelt, und dann einen Wert übernehmen:

class List extends VerticalFieldManager {
...
    public Vector getCheckedItems() {
        Vector result = new Vector();
        for (int i = 0, cnt = getFieldCount(); i < cnt; i++) {
            Field field = getField(i);
            if (field instanceof CheckboxField) {
                CheckboxField checkboxField = (CheckboxField) field;
                if (checkboxField.isChecked())
                    result.addElement(checkboxField);
            }
        }
        return result;
    }
}

0voto

kehers Punkte 3968

@sandhya-m

class List extends VerticalFieldManager {
...
    public void selectAll() {
        for (int i = 0, cnt = getFieldCount(); i < cnt; i++) {
                Field field = getField(i);
                if (field instanceof CheckboxField) {
                        CheckboxField checkboxField = (CheckboxField) field;
                        checkboxField.setChecked(true);
                }
        }
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X