J'ai une vue créée dynamiquement et je veux la trouver par étiquette, est-ce possible? Je connais la fonction findViewById
, existe-t-il quelque chose de similaire pour les balises?
LinearLayout linLayout = (LinearLayout)findViewWithTag("layout1");
mais je ne pense pas que vous ayez besoin de tag pour une vue dynamique. Vous pouvez récupérer une ressource dynamique en suivant le code
for (int i=0; i < total_resource; i++) {
//retrieve id dynamically
int id = getResources().getIdentifier("resource"+i, "id", getPackageName());
TextView myText = (TextView) findViewById(id); // get the element
}
Créez ids.xml pour stocker votre identifiant:
<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="component1" /> <item type="id" name="component2" /> <item type="id" name="component3" /> </resources>
Définissez le composant créé dynamiquement comme:
Button1.setId(R.id.layout1); buttom2.setId(R.id.layout2); button3.setId(R.id.layout3);
Une autre méthode consiste à définir une balise sur votre composant lors de la création dynamique.
button1.setTag(1);
Et utilisez getTag()
pour obtenir ce composant