2009-07-27 10 views
2

Wie können alle überprüften Elemente aus einer Liste abgerufen werden?Blackberry - Get Checked Items von der Liste mit Checkboxen

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

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

Ich implementiere Listfield mit Kontrollkästchen wie in der Knowledgebase Artikel.

Wenn ich getSelection() verwende, gibt es mir den aktuell markierten Listenzeilenindex zurück und nicht alle, die überprüft wurden.

Antwort

3

Wie ich undestood, Probe ist How To - Create a ListField with check boxes

Dann können Sie Vektor der Klasse hinzufügen, wo ListFieldCallback implementiert:

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

und aktualisieren 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 iterieren e über alle Felder auf dem Bildschirm (oder einen Manager) und prüfen, ob seine Checkbox Feld, dann einen Wert annehmen:

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; 
    } 
} 
+0

wie alle Elemente zu einem Zeitpunkt wählen, in ein listfield beim Klicken auf den Button selectall.plz geben Sie Ihre Vorschläge, wenn jemand eine Idee über HTAT. – user1213202

0

@ 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); 
       } 
     } 
    } 
} 
Verwandte Themen