android - set ID to the view programmatically

Justin McGuire picture Justin McGuire · Mar 18, 2016 · Viewed 8.1k times · Source

I'm adding Buttons programmatically and the number of Buttons depends on some conditions. To add rules for RelativeLayout.LayoutParams that Buttons be aligned to the top of each other I need to set their IDs. All the answers from 2-3 years ago say that setId(int) is okay (e.g. setId(1)) but now it's forbidden (UPD. it's not ok only with int literals. With int variables everything is ok. Wonder why). How to do it nowadays?

Answer

arsent picture arsent · Mar 18, 2016

According to the API it's not forbidden or deprecated. Here is the best way of using it.

  1. Create res/values/ids.xml and define

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
            <item type="id" name="button1" />
            <item type="id" name="button2" />
    </resources>
    
  2. once you have that, you can than use setId

    button1.setId(R.id.button1);
    button2.setId(R.id.button2);