2011-02-23 2 views
0

J'essaie de définir le texte sur un bouton lorsque l'utilisateur clique dessus. J'initialise un BigVector qui mettra à jour le texte du bouton avec sa valeur. J'utilise une valeur de compteur pour déterminer si la valeur de BigVector doit être sélectionnée. Le problème est, le code ci-dessous s'attend à ce que la valeur du compteur soit finale.Mise à jour du texte sur un bouton lorsque vous cliquez dessus

Une meilleure méthodologie pour mettre à jour le texte sur un champ quand il est cliqué est la bienvenue.

Voici mon code -

final BigVector bigStringVectorA = new BigVector(); 
    bigStringVectorA.addElement("A Test answer 1"); 
    bigStringVectorA.addElement("A Test answer 2"); 
    bigStringVectorA.addElement("A Test answer 3"); 

    aAnswerOptionButton.setChangeListener(new FieldChangeListener() { 
     public void fieldChanged(Field field, int context) { 
      aAnswerOptionButton.setText((String)bigStringVectorA.elementAt(counter)); 
     } 
    }); 

Merci

Répondre

2

Vous pouvez faire le compteur une variable d'instance, que ce soit dans la classe extérieure ou dans le FieldChangeListener anonyme:

aAnswerOptionButton.setChangeListener(new FieldChangeListener() { 
    private int counter = 0; 
    public void fieldChanged(Field field, int context) { 
    counter++; 
    if (counter > bigStringVectorA.size()) { 
     counter = 0; 
    } 
    aAnswerOptionButton.setText((String)bigStringVectorA.elementAt(counter)); 
    } 
}); 
0

Vous pouvez essayer d'appeler la méthode Invalidate() de ce champ et qui devrait forcer le redessiner de ce bouton.

aAnswerOptionButton.setChangeListener(new FieldChangeListener() { 
     public void fieldChanged(Field field, int context) { 
      aAnswerOptionButton.setText((String)bigStringVectorA.elementAt(counter)); 
      aAnswerOptionButton.invalidate(); 
     } 
    }); 
Questions connexes