Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Easier way to get view's Id (string) by its Id (int)

Tags:

android

I'm new with android and java, so sorry if it's a too basic question but I've tried to find a solution in the forums and google and I couldn't.

I have 24 buttons in my layout, all these buttons do something similar so I want to create a generic function. But first I need to know the name (xml id) of he button.

This the XML code of the button:

  <Button       android:id="@+id/add_04"       android:layout_width="42dp"       android:layout_height="wrap_content"       android:layout_gravity="center"       android:layout_marginLeft="15dp"       android:background="@xml/zbuttonshape"       android:onClick="onClick"       android:text="@string/mas" /> 

I set android:onClick="onClick" for all the buttons.

In my activity I've create a new function onClick:

This the code I've tried:

public void onClick(View v) {         String name = v.getContext().getString(v.getId());         String name2 = context.getString(v.getId());         String name3 = getString(v.getId());         String name4 = getResources().getString(v.getId());  } 

But when I try to get the name (in this case "add_04") I always get "false".

Finally I've found a solution with the following code:

import java.lang.reflect.Field;  String name5 = null; Field[] campos = R.id.class.getFields(); for(Field f:campos){      try{         if(v.getId()==f.getInt(null)){             name5 = f.getName();             break;         }        }        catch(Exception e){         e.printStackTrace();     } } 

My question is if Is not there an easier way to get this ID?

Thanks in advance.

like image 967
Richal Avatar asked Feb 01 '13 13:02

Richal


People also ask

How do I find view by ID?

The Android SDK provided a method: findViewById() . Functionality-wise, this method performs a singular task — it will give you the reference to the view in XML layouts by searching its ID. And if nothing is found, it will give you the good old NULL , which is said to be the 1-billion dollar mistake by its creator.

What is a string ID?

String ID (SID) is a tool that converts strings into fix-sized hashed values, commonly used in games for looking up resources. The hash function is chosen to support string concatenation.

In which file we can create ID of text view instant?

You can create a TextView instance either by declaring it inside a layout XML file or by instantiating it programmatically.


1 Answers

like this:

/**  * @return "[package]:id/[xml-id]"  * where [package] is your package and [xml-id] is id of view  * or "no-id" if there is no id  */ public static String getId(View view) {     if (view.getId() == View.NO_ID) return "no-id";     else return view.getResources().getResourceName(view.getId()); } 

I use this in view constructors to make more meaningful TAGs

like image 97
gadget Avatar answered Sep 24 '22 21:09

gadget