Android: Как получить идентификатор текстового просмотра при нажатии? - PullRequest
1 голос
/ 18 ноября 2010

У меня есть действие, которое запрашивает sqllite и отображает вывод в xml

это часть деятельности

( (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>

Теперь это работает нормально. Он отображает полученный запрос. Теперь я хочу создать другое действие, которое реагирует на долгое нажатие или только одно касание, когда отображается запрос. Как я могу получить идентификатор нажатого текстового обзора, чтобы я мог использовать его для другой деятельности?

большое спасибо за вашу помощь.

Ответы [ 2 ]

10 голосов
/ 18 ноября 2010

Сделайте это вместо этого:

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

, а затем в onClickEvent вы получаете идентификатор текстового представления, например, «приложения», с помощью метода getId().

1 голос
/ 06 ноября 2013

если вы хотите строку идентификатора, вы можете использовать следующий метод:

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

    }
...