Sono un java novice e ho utilizzato il codice seguente per visualizzare un elenco di TextView selezionabili che chiamano una classe specifica quando viene fatto clic.Android: looping attraverso un array di stringhe - aiuto necessario sulla logica per il metodo intent
È un elenco di nomi di squadre di calcio.
Es.
Arsenal Manchester United Chelsea
Cliccando su TextView Arsenal (TextView id = ars) chiamerà ars.class Cliccando su TextView Chelsea (TextView id = che) chiamerà che.class
I avere più di 20 nomi di squadre di calcio.
Ho una matrice di ID di vista testo, che eseguo il ciclo e assegna loro un'azione selezionabile. Funziona bene
Ho una serie di stringhe di nomi di squadra, il codice scorre attraverso l'array di stringhe e assegna ciascun nome di team ad un oggetto di classe, che viene utilizzato nel metodo Intent().
Quando si esegue questo codice, l'elenco viene prodotto ma quando si fa clic su un nome di team si apre sempre Wol.java, l'ultima posizione nell'array di stringhe.
Ho bisogno di aiuto con la logica, in modo che quando clicco su Arsenal si apre ars.class
Ecco il codice.
public final int[] teams = { R.id.ars, R.id.ast, R.id.bir, R.id.bla,
R.id.blp, R.id.bol, R.id.che, R.id.eve, R.id.ful, R.id.hul,
R.id.lee, R.id.liv, R.id.mid, R.id.mnc, R.id.mnu, R.id.nor,
R.id.nwu, R.id.por, R.id.qpr, R.id.sto, R.id.sun, R.id.swa,
R.id.tot, R.id.wes, R.id.wig, R.id.wol };
//String array of teamnames, named to correspond their class name.
public final String[] teamnames = { "ars", "ast", "bir", "bla", "blp",
"bol", "che", "eve", "ful", "hul", "lee", "liv", "mid", "mnc",
"mnu", "nor", "nwu", "por", "qpr", "sto", "sun", "swa", "tot",
"wes", "wig", "wol" };
TextView tv;
Class classname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.m_transfers);
setTeamNames(); //Method sets up team names to a Class name.
for (int i = 0; i < teams.length; i++) {
tv = (TextView) findViewById(teams[i]);
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent open = new Intent(Transfers.this, classname);
startActivity(open);
}
});
}
;
}
public void setTeamNames() {
for (String s : teamnames) {
String name = "ttj.android.ft.teams." + s;
try {
classname = Class.forName(name);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
;
}
Stai dicendo seriamente che hai creato 20 attività diverse, una per ogni squadra? Perché non avere solo un 'Activity' (chiamato' TeamActivity' per esempio) e passare il nome del team come una stringa 'Extra' nell'intento' che usi per 'startActivity (...)'? – Squonk
Molto nuovo per lo sviluppo di Android, che continua a farmi vedere il Manifest. Sì, ho creato 20 attività separate nel manifest. Posso creare un'Attività di squadra nel manifest? – tiptopjat
@tiptopjat Potresti creare una TeamActivity nel manifest nello stesso modo in cui hai effettuato le 20 diverse attività e poi, come ha detto MisterSquonk, basta aggiungere una stringa o una int all'Intento per differenziare. – Tushar