2010-11-28 51 views
0

Je construis une application android qui a un listview et lorsque l'utilisateur clique sur l'élément listview, une nouvelle activité est lancée. Je veux transmettre des données à la nouvelle activité. J'ai deux titres de variables locales et des descriptions que je veux utiliser dans cette méthode. Le compilateur lance une erreur indiquant que les descriptions doivent être un type final à utiliser. Parce que le tableau de descriptions est généré dynamiquement je ne peux pas le rendre final.Android-ListView - accès aux variables locales dans la méthode onitemclick

Y at-il quelque chose qui me manque ou existe-t-il un autre moyen de travailler avec cela?

String[] titles = someClass.getTitles(); 
String[] descriptions = someClass.getDescriptions(); 

setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, titles)); 
ListView lv = getListView(); 
lv.setTextFilterEnabled(true); 
lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
     Intent i = new Intent(TitleView.this, DetailView.class); 
     i.putExtra("title", ((TextView) view).getText()); 
     i.putExtra("description", descriptions[new Long(id).intValue()]); 
     startActivity(i); 
    } 
}); 

Merci

Répondre

1

Si vous spécifiez le descriptions comme final, cela ne signifie pas qu'il ne peut pas être construit dynamiquement. Cela signifie qu'une fois que descriptions est chargé avec ce qui est retourné par someClass.getDescriptions();, il ne peut pas être réaffecté à quelque chose d'autre (et si c'est le cas, il va lancer une erreur au moment de la compilation).

+0

Merci pour la réponse .. Mon mauvais., Ma méthode renvoyait la liste vide. – racharambola