¿Cómo establecer Id de diseño dynamic creado?

Quiero dar ID a algunas vistas (textview, imageview, etc.) en un diseño que está creado programáticamente. Entonces, ¿cuál es la mejor manera de establecer ID.

Usted crea un archivo ids.xml y coloca todos los ID necesarios en él como se muestra a continuación

      

Ahora, para sus diseños o vistas creados dinámicamente, puede usar estos identificadores como se muestra a continuación.

 new_layout1.setId(R.id.layout1); new_view2.setId(R.id.layout2); new_layout3.setId(R.id.layout3); 

Espero que te pueda ayudar.

Google finalmente se dio cuenta de la necesidad de generar identificaciones únicas para vistas creadas mediante progtwigción …

Desde el nivel API 17 y superior, una vez puede llamar a View.generateViewId ()

crear la carpeta res/values/ids.xml y

      

en la llamada clase de actividad como este

 ImageView refreshImg = new ImageView(activity); ImageView settingsImg = new ImageView(activity); refreshImg.setId(R.id.refresh); settingsImg .setId(R.id.settings); 
 int id=100+1; layout.setId(id); 

Si está poniendo un grupo de componentes repetidamente en un diseño programáticamente como a continuación:

     

entonces, puedes usar for loop y dar identificadores en consecuencia:

 for(int i=0;i 

O si solo desea agregar un grupo de componentes, puede usar cualquier número entero que sea grande y no entre en conflicto con los ID de otros componentes en Recursos. No será muy conflictivo.

¡Prueba este código! Esto debería ayudar a dar una idea.

activity_prac_main.xml

          

aquí está el rest del código

  public class AnotherActivity extends AppCompatActivity { private int count = 1; List gridArray; private TextView myDisplayText; @Override protected void onCreate( Bundle savedInstanceState) { super.onCreate(savedInstanceState); gridArray = new ArrayList<>(); gridArray.add(Integer.valueOf(1)); setContentView(R.layout.activity_prac_main); findViews(); } private void findViews(){ GridLayout gridLayout = (GridLayout)findViewById(R.id.my_grid); gridLayout.setColumnCount(4); LinearLayout linearLayout = (LinearLayout) gridLayout.findViewById(R.id.linear_view); linearLayout.setTag("1"); Button myButton = (Button) linearLayout.findViewById(R.id.my_btn); myButton.setTag("1"); TextView myText = (TextView) linearLayout.findViewById(R.id.my_txt); myText.setText("1"); myDisplayText = (TextView) findViewById(R.id.display_txt); myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { TextView txt = (TextView) view; myDisplayText.setText("PRESS " + txt.getTag().toString()); if(count < 24) { createView(); } else{ dialogBox(); } } }); } private void createView(){ LinearLayout ll = new LinearLayout(this); ll.setId(Integer.valueOf(R.id.new_view_id)); ll.setTag(String.valueOf(count+1)); Button newBtn = createButton(); newBtn.setId(Integer.valueOf(R.id.new_btn_id)); newBtn.setTag(String.valueOf(count+1)); TextView txtView = createText(); txtView.setId(Integer.valueOf(R.id.new_txt_id)); txtView.setTag(String.valueOf(count+1)); txtView.setText(String.valueOf(count+1)); GridLayout gridLayout = (GridLayout)findViewById(R.id.my_grid); ll.addView(newBtn); ll.addView(txtView); ll.setOrientation(LinearLayout.VERTICAL); gridLayout.addView(ll); count++; } private Button createButton(){ Button myBtn = new Button(this); myBtn.setText(R.string.button_send); myBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { TextView txt = (TextView) view; myDisplayText.setText("PRESS " + txt.getTag().toString()); if(count < 24) { createView(); } else{ dialogBox(); } } }); return myBtn; } public void dialogBox() { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); alertDialogBuilder.setMessage("GRID IS FULL!"); alertDialogBuilder.setPositiveButton("DELETE", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { GridLayout gridLayout = (GridLayout)findViewById(R.id.my_grid); gridLayout.removeAllViews(); count = 0; createView(); } }); alertDialogBuilder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { } }); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } private TextView createText(){ TextView myTxt = new TextView(this); myTxt.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); return myTxt; } } 

Como puede ver, los identificadores se crearon en res -> valores -> archivo ids.

al crear vistas dinámicamente id es el mismo para las vistas.

Cada TextView comparte la misma identificación. Cada botón comparte la misma identificación. cada diseño comparte la misma identificación.

Los Id. Solo son importantes para acceder al contenido de las vistas.

Sin embargo, la etiqueta es lo que hace que cada vista sea única entre sí.

¡Espero que esto te ayude!

Puede definir sus Id. Como recursos y luego usar setId() de la vista para configurarlo. En un archivo xml, defina los ID como:

  your id name  

luego, use en el archivo java como …

 layout.setId(R.id.)