2010-04-22 5 views
22

en mi aplicación puedo crear filas dinámicas en la tabla tanto como en este tutorial: http://en.androidwiki.com/wiki/Dynamically_adding_rows_to_TableLayoutAndroid - adjuntar los datos de puntos de vista

for(int i = startDay; i < startDay + 7; i++){ 

     /* Create a TextView to be the row-content. */ 
     TextView day = new TextView(this); 
     day.setText(Integer.toString(i)); 
     day.setLayoutParams(new LayoutParams(
       LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT)); 

     day.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.i("Listener: ", "Click"); 
      } 

Así que ahora cuando hago clic en un TextView me puedo registrar eventos de clic, pero ¿cómo Yo determino en que se hizo clic en TextView?

No solo un objeto que recibo con un evento, sino datos como el número de día en el que se hizo clic?

Idealmente, me gustaría tener datos adjuntos a cada vista que creo dinámicamente. Algo así como el método data() en Javascript jQuery.

Ahora puedo ver solo 1 forma de resolver esto, al crear TextView agregar identificación con datos y cuando se hace clic, recuperar la id y analizarla para obtener mis datos. Pero me parece un enfoque feo.

¿Hay alguna forma de adjuntar datos arbitrarios a las vistas de Android?

Respuesta

47

Encontrado la respuesta pasando por los métodos de vista. Tal vez sea útil para alguien.

métodos que necesitaba eran:

setTag() y getTag()

http://developer.android.com/reference/android/view/View.html#setTag%28java.lang.Object%29

+0

¿Qué ocurre si tomo varios datos? no solo una etiqueta? –

+2

@FranciscoCorralesMorales Puede agregar varias etiquetas, cada una identificada por una clave int. –

+0

@FranciscoCorralesMorales Puede agregar una lista de identificadores de objeto únicos a la etiqueta. – CodeShadow

Cuestiones relacionadas