I am developing an application in which i am creating an Edittext programmatically as :
EditText edText = new EditText(this);
edText.setId(1);
edText .setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,0f));
edText .setInputType(InputType.TYPE_CLASS_NUMBER);
edText.setHint("dsgsdgsgs");
tableLayout.addView(edText);
Here I am setting the id of the Edit text as "1" by the line edText.setId(1);
in integer.
But what i need is - I want to set the ID in character as for example:
edText.setId("edittext_hello");
So that i can access it via that id. How can i achieve this task please help.
You can also achieve your problem without creating any extra resource like ids.xml and without having any id set to any of the EditText created dynamically.
Just need to have the parent reference of the element you have set a tag, and then, you can find it with the tag.
Parent
LinearLayout linearLayout= (LinearLayout) findViewById(R.id.layout_id);
and then
Childs
EditText editText = (EditText) linearLayout.findViewWithTag("yourStringTag");
for example..
Note: Obviously, if you have created EditTexts dynamically, you would do something like this:
You can use setText() instead of setId().
edText_view.setText("Your Text");
As the others have said you can't do this. Why do you want to / what's your requirement?
You could create an id in an xml file and use that - if you want it to be descriptive. This is also a better approach than using literal
int
s as you may get an id clash with other views in the layout hierarchy (unlikely but possible). This to me seems like the best / cleanest solution to your problem.See http://developer.android.com/guide/topics/resources/more-resources.html#Id
e.g. in
res/values/id.xml
and then set with
You can't set id as a String. You can only assign integer as Id. But if you want to use String as id for the ease of use then - in res/values/ids.xml file
And then use it as:
So you can do what you need.
No, you can't set
id
as a String. You can only assigninteger
as Id. You can usesetTag()
ofView
with String. But for id it will only Integer. As android resources are maintained in R.java file for integer type.Update:
Why do you not set String or other data types (without integer) id to any android resource?
Because:
An Android Resource id is a 32-bit integer. It comprises
The Package id identifies the Package chunk which contains the Resource.
The Type id identifies the type of the Resource and hence the corresponding Typespec chunk and Type chunk or chunks which contain its value or value(s)
The Entry index identifies the individual Resource within the Typespec chunk and Type chunk(s).
You can't set
id
withchar
,String
or anything else exceptint
...because,id
is maintained byR.java
file which contains onlyint
.You can use
setTag()
instead ofsetId()
.Use
setTag()
as below...