Android - button.setId

 
Vista:
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

button.setId

Publicado por Francisco (358 intervenciones) el 04/01/2017 13:19:28
Feliz año

necesito asignar 3 identificadores para un Button creado dinamicamente.


A la hora de ir creandolos le voy asignando su valor que esta en una base de datos
.
Estoy usando

Button.setiId() para un valor
Button.setTag()npara otro valor

y necesito poder asignarle otro valor de tipo entero .

Para que cuando haga click en el me devuelva estos tres valores.

Como puedo solucionarlo.

Gracias por todo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

button.setId

Publicado por Luis (20 intervenciones) el 04/01/2017 14:16:40
si te fijas en la sobrecarga del metodo setTag() a este le puedes pasar valores con key - value con lo cual, puedes insertar todos los tags que necesites, se diferenciaran por el key u a la hora de hacer el getTag() si le pasas el value del que quieres te lo devolvera.

La key ha de ser de tipo int y el value da igual porque recibe un Object por eso al hacer el get tendrás que hacer un cast al tipo correspondiente

Ejemplo:
1
2
3
4
5
6
7
Button.setTag(1, "Valor1");
Button.setTag(2, "Valor2");
Button.setTag(3, "Valor3")
 
var valor1 = (String)Button.getTag(1); //Valor1 tendra el valor "Valor1"
var valor2 = (String)Button.getTag(2); //Valor2 tendra el valor "Valor2"
var valor3 = (String)Button.getTag(3); //Valor3 tendra el valor "Valor3"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

button.setId

Publicado por Francisco (358 intervenciones) el 04/01/2017 14:26:41
ok muchas gracias yo pensaba que no se podia.
ya estaba pensando en crear un array multidinmensional.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

button.setId

Publicado por Francisco (358 intervenciones) el 04/01/2017 15:19:54
No se que estoy haciendo mal pero esto no me funciona
me salta error

si quito esto funciona bien

1
2
boton.setTag(1, "valor1");
boton.setTag(2, "valor2");

Nada mas añadir el valor al setTag


1
2
3
4
5
6
7
8
9
10
11
12
layout=(LinearLayout) findViewById(R.id.layout);
 
	for (int i=0;i < 5;i ++){
		Button boton= new Button(this);
 
		boton.setText("prueba");
		boton.setTag(1, "valor1");
		boton.setTag(2, "valor2");
		layout.addView(boton);
 
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

button.setId

Publicado por Luis (20 intervenciones) el 04/01/2017 15:35:08
Que error te salta? Y en que linea?

Es que puede ser que haya que hacer algo mas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

button.setId

Publicado por Francisco (358 intervenciones) el 04/01/2017 16:03:37
Si estoy mirando en internet y ya encontrado una solucion y es que la clave que te pide es de type id y parece que hay
que declararla en Resources

1
2
3
4
<item type="id" name="codigo">
</item>
<item type="id" name="id_alarma">
</item>


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
38
39
40
41
public class MainActivity extends ActionBarActivity {
 
	LinearLayout layout;
	TextView texto;
 
 
 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		layout=(LinearLayout) findViewById(R.id.layout);
		texto=(TextView) findViewById(R.id.textView1);
		int ii=0;
		for (int i=0;i < 5;i ++){
 
			Button boton= new Button(getApplicationContext());
 
			ii ++;
 
 
 
			((Button)boton).setText("hola");
			((Button)boton).setTag(R.id.codigo, ii);
			((Button)boton).setTag(R.id.id_alarma, ii*10);
 
 
			boton.setOnClickListener(new OnClickListener() {
 
				@Override
				public void onClick(View v) {
					texto.setText("" + ((Button)v).getTag(R.id.codigo) + "\n" + ((Button)v).getTag(R.id.id_alarma));
 
 
				}
			});
 
			layout.addView(boton);
 
		}
	}


Ahora estoy biucando si esta variable de tipo id la puedes declarar en tiempo de ejecucion.
Si no llega a ser por ti no damos con la solucion.

Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

button.setId

Publicado por Luis (20 intervenciones) el 04/01/2017 16:11:50
Ahora que lo dices si me suena eso de tipo id con ponerla como resource vale, en tu caso no hace falta que la crees en tiempo de ejecución, ya que eso es la key, lo que a ti te importa es el value que ese si le generas en tiempo de ejecución. con que relaciones bien las keys con los values no tienes porque crear el key en tiempo de ejecución.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar