Bonjour,
Quelques choses m'échappe sur la porte d'une de mes variables : myList.
Voici mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public void onCreate(Bundle savedInstanceState) {
...
ArrayList<HashMap<String, String>> myList;
myList = authentification.listTwitt();
SimpleAdapter mSchedule = new SimpleAdapter(
this,
myList,
R.layout.twit_list_row,
new String[] {"text"},
new int[] {R.id.text}
);
/* definition du bouton avec son écouteur */
Button boutonEnvoiMsg = (Button) findViewById(R.id.bttnEnvoiMessage);
boutonEnvoiMsg.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
EditText writeMsg = (EditText) findViewById(R.id.writeMessageId);
/* ERREUR A CE NIVEAU */
myList = authentification.listTwitt(writeMsg.getText().toString());
SimpleAdapter mSchedule = new SimpleAdapter(
context,
myList,
R.layout.twit_list_row,
new String[] {"text"},
new int[] {R.id.text}
);
mRecetteList.setAdapter(mSchedule);
}
});
} // fin de la méthode |
myList est défini dans ma méthode et utilisé une première fois
myList = authentification.listTwitt();
A ce niveau pas de souci.
Lorsque je fais un clique sur mon bouton, je souhaiterais mettre à jour cette liste. C'est dans le listener que cela pose souci.
J'ai l'erreur suivante
Cannot refer to a non-final variable myList inside an inner class defined in a different method AndroTwit.java /AndroTwit/src/com/AndroTwit line 241 Java Problem
Eclipse me propose donc de rajouter le mot clef final dans ma définition :
final ArrayList<HashMap<String, String>> myList;
Je le fais, et je tombe toujours sur cette erreur.
Pour contourner le problème, je défini cette liste en tant qu'attribut de la classe de ma méthode public void onCreate :
1 2 3 4 5
| public class MaClass {
private ArrayList<HashMap<String, String>> myList;
public void onCreate(Bundle savedInstanceState) {
....
} |
Le listener de mon bouton est en fait une classe interne mais je vois pas ou est le souci de passer une variable.
Ma solution n'est pas terrible parce que je n'ai pas besoin que ma variable ne soit accéssible sur toute la classe mais juste pour ma methode onCreate.
C'est vraiment curieux
Partager