2010-11-17 60 views
1

我有一個從sqllite查詢活動和顯示輸出爲xmlandroid:如何獲得點擊時的文本視圖的ID?

這是活動

((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()+""); 

的一部分,這是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> 

現在這工作正常。它顯示結果查詢。現在,我想要創建另一個活動來響應長按或顯示查詢時的一次觸摸。如何獲得按下的textview的ID,以便我可以將其用於其他活動?

非常感謝您的幫助。

回答

8

是不是view.getId()?

8

不喜歡這個:

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

然後在onClickEvent你得到像「應用程序」寫入文本視圖的ID,用getId()方法。

1

,如果你願意,你可以用下面的方法的id字符串:

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

    } 
相關問題