2010-04-22 13 views
22

nella mia applicazione creo file dinamici nella tabella più in questo tutorial: http://en.androidwiki.com/wiki/Dynamically_adding_rows_to_TableLayoutAndroid - collegare i dati alle viste

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"); 
      } 

Così ora quando clicco su un TextView posso registrarti clicca evento, ma come faccio Determinare quale TextView è stato cliccato?

Non solo un oggetto che ottengo con un evento ma dati come il numero del giorno selezionato?

Idealmente vorrei avere dati collegati a ogni vista che creo dinamicamente. Qualcosa come il metodo data() in jQuery Javascript.

In questo momento riesco a vedere solo 1 modo per risolvere questo problema: mentre creo TextView, aggiungi l'id con i dati e quando viene fatto clic, recupero l'ID e lo analizzo per ottenere i miei dati. Ma mi sembra un approccio brutto.

C'è un modo per allegare dati arbitrari alle viste Android?

risposta

47

Trovato risposta passando attraverso i metodi di visualizzazione. Forse sarà utile per qualcuno.

Metodi mi servivano erano:

setTag() e GetTag()

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

+0

cosa succede se ho bisogno di parecchi dati? non solo un tag? –

+2

@FranciscoCorralesMorales È possibile aggiungere diversi tag, ciascuno identificato da una chiave int. –

+0

@FranciscoCorralesMorales È possibile aggiungere un elenco di identificativi oggetto univoci al tag. – CodeShadow

Problemi correlati