(programacion)Duda basica con java(en android), usar String+int como nombre de variable

No soy capaz de usar algo asi:

public void funcion(String pag){
//pag = Integer.parseInt(pag);
String paginax = "pagina"+pag;
String pagina = getString(R.string.(paginax));
[...]

Ni
String pagina = getString(R.string."pagina"+pag);
tampoco me coge

String pagina = getString(R.string.pag);
(aunque creo que un recurso string no puede empezar por numero).
No se como buscar de una variable el recurso adecuado..

Ya he tenido el problema con unos textview autogenerados que queria llamar(tv1, tv2, tv3, tv4 segun los que se generasen segun los datos a tratar y tuve que hacerlo con arrays pero no me parece la manera adecuada...)
Creo que tiene que haber la manera... A ver si lo encuentro pero como llevo un par de dias con ello posteo, igual tengo la suerte de que alguien me responda.
Un saludo.
Java, como casi cualquier lenguaje compilado, no permite llamar a las variables "desde un string".

Afortunadamente, si lo que quieres es obtener resources de Android, sí que se puede mediante string:

int resource = getResources().getIdentifier(paginax, "string"); //Obtenemos el identificador
String pagina = getString(resource); //Obtenemos el dato


No lo he probado, pero por ahí más o menos es por donde deberían ir los tiros.
muchas gracias, hace unas horillas encontre justo ese metodo y logre que funcionase. Lo que me interesaba sobretodo es la manera de llamar a una variable de esa manera y veo que no se puede :(
Son el tipo de preguntas concretas que no se me da bien hacerle a google en ingles.

Mira un supuesto, tengo una base de datos, en la que puedo tener 10 entradas como100, el usuario decide las que estan activas.
Mi idea era generar textviews con un id autogenerado, vamos en un bucle se van creando los textvies desde una base de datos con las entradas activas.
tv1
tv2
tv3
....

De manera que cuando el usuario pulsa en uno de estos tv, se en cual esta pulsando, se a que dato tengo que acceder, y la idea era que pudiese trabajar sobre los datos de esa tv.

Es algo que poniendo el nombre de la variable rollo variable+i es faciilisimo.

Ahora mismo he salido del paso haciendo que el textview sea un array, primero cuento el numero de entradas activas y creo un array de ese numero de entradas.
siendo
tv[1]
tv[2]
tv[3]

Pero no me acaba de gustar... Bueno lo comento por si alguien se anima a darme otra logica jejeje. La verdad que vengo del php y no soy precisamente experto. Lo de la orientacion a objetos lo llevo fatal( y muchas veces no la entiendo directamente, no entiendo el beneficio de ejemplos que he visto para trabajar con base de datos del tipo,
String tabla=ttabla(si la tabla nunca va a cambiar, y la base de datos si cambia vas a tener que cambiar todas las consultas no es algo que se vaya a poder usar sin reescribir el codigo)
String nusuario=usuario

Entiendo que en segun que cosas si es muy util(por ejemplo en un login) pero en cosas mas concretas no le veo el sentido a declarar las cosas dos veces como he visto en eejemplos(sera que aun no cogi rodaje, y aun no consegui esa capacidad de abstraccion).
Bueno un saludo! y gracias!
Cuando se tiene una cantidad indefinida de datos, lo mejor es usar un array o una lista, tal y como estabas haciendo. Además, permite hacerlo "automáticamente" usando bucles.

Cursor cursor = getDatos(); //Implemetna el getDatos según corresponda
ArrayList<TextView>  lista = new ArrayList<TextView>();
while (cursor.next() ) {
   TextView tv = new TextView(this);
   tv.setText(cursor.getString(1));
   tv.setID(cursor.getInt(2));
   lista.add(tv);
}


Así se añadirán automáticamente cualquier cantidad de TVs que necesites.
3 respuestas