2010-11-17 6 views
1

J'ai une activité que les requêtes de SqlLite et afficher la sortie XMLandroid: Comment obtenir l'ID d'un textview quand on clique dessus?

cela fait partie de l'activité

((TextView) view.findViewById(R.id.tv_id)).setText(listItem.getId()+""); 
((TextView) view.findViewById(R.id.tv_name)).setText(listItem.getName()); 
((TextView) view.findViewById(R.id.tv_age)).setText(listItem.getAge()+""); 

et voici le xml:

<TableLayout 
    android:layout_width="wrap_content" 
    android:id="@+id/TableLayout01" 
    android:layout_below="@+id/tv_age" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/tv_name"> 
    <TableRow 
    android:layout_width="wrap_content" 
    android:layout_below="@+id/tv_age" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/TableLayout01" 
    android:id="@+id/TableRow01"> 
    <TextView 
    android:layout_width="10dip" 
    android:layout_height="30dip"  
    android:id="@+id/tv_id" 
    android:text=""  
    android:layout_centerVertical="true"> 
    </TextView> 
    <TextView 
    android:layout_width="100dip" 
    android:layout_height="wrap_content" 
    android:text="" android:id="@+id/tv_name" 
    android:layout_centerVertical="true" 
    android:layout_toRightOf="@+id/tv_id" 
    android:layout_marginLeft="10px"> 
    </TextView> 
    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="" android:id="@+id/tv_age" 
    android:layout_centerVertical="true" 
    android:layout_toRightOf="@+id/tv_name" 
    android:layout_marginLeft="10px"> 
    </TextView> 
    </TableRow> 
</TableLayout> 

Maintenant, cela fonctionne très bien . Il affiche la requête résultante. Maintenant, je veux créer une autre activité qui répond à la presse longue ou juste une touche lorsque la requête est affichée. Comment puis-je obtenir l'ID de la vue texte pressée pour que je puisse l'utiliser pour l'autre activité?

Merci beaucoup pour votre aide.

Répondre

8

n'est-ce pas view.getId()?

8

faire comme ceci:

TextView tvId = (TextView) findViewById(R.id.tv_id); 
tvId.setText(listItem.getId()+""); 
tvId.setOnClickListener(this); 

puis dans le onClickEvent vous obtenez l'identifiant de la vue de texte comme écriture « apps », avec la méthode getId().

1

si vous voulez que la chaîne de l'identifiant, vous pouvez utiliser la méthode suivante:

String name = getIDName(MyTextView, R.id.class); 

public static String getIDName(View view, Class<?> clazz) throws Exception { 

     Integer id = view.getId(); 
     Field[] ids = clazz.getFields(); 
     for (int i = 0; i < ids.length; i++) { 
      Object val = ids[i].get(null); 
      if (val != null && val instanceof Integer 
        && ((Integer) val).intValue() == id.intValue()) { 
       return ids[i].getName(); 
      } 
     } 

     return ""; 

    } 
Questions connexes