Soy un principiante de Java y he usado el código siguiente para mostrar una lista de TextViews seleccionables que llaman a una clase específica cuando se hace clic.Android: Looping a través de una matriz de cadenas: ayuda necesaria en la lógica para el método de intención
Es una lista de nombres de equipos de fútbol.
Por ejemplo.
Arsenal Manchester United Chelsea
Al hacer clic en Vista de Texto Arsenal (TextView id = ars) llamará ars.class Al hacer clic en Vista de Texto Chelsea (TextView id = che) llamará che.class
I tener más de 20 nombres de equipos de fútbol.
Tengo una matriz de ids de vistas de texto, que recorro y les doy la posibilidad de hacer clic. Esto funciona bien
Tengo una matriz de cadenas de nombres de equipos, el código recorre la matriz de cadenas y asigna cada nombre de equipo a un objeto de clase, que se utiliza en el método Intent().
Cuando ejecuto este código, la lista se produce pero cuando hago clic en el nombre de un equipo, siempre se abre Wol.java, la última posición en la matriz de cadenas.
Necesito ayuda con la lógica, de modo que cuando hago clic en el Arsenal se abre ars.class
Aquí está el código.
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();
}
}
;
}
¿Estás diciendo seriamente que has creado 20 actividades diferentes, una para cada equipo? ¿Por qué no simplemente tener una 'Activity' (llamada' TeamActivity' por ejemplo) y pasar el nombre del equipo como una cadena 'Extra' en el' Intent' que usas para 'startActivity (...)'? – Squonk
Muy nuevo para el desarrollo de Android, todavía estoy entendiendo el Manifiesto. Sí, he creado 20 actividades separadas en el manifiesto. ¿Podría hacer una actividad de equipo en el manifiesto? – tiptopjat
@tiptopjat Puedes hacer una actividad de equipo en el manifiesto de la misma manera que hiciste las 20 actividades diferentes y luego, como dijo MisterSquonk, simplemente agrega una cadena o int al Intento para diferenciar. – Tushar