Obtener ids de vista en un bucle for por programa?

Simplemente quiero saber. Hay una manera de crear un id que está usando para el bucle

Tengo 10 botones en xml. Hay id son button1,button2,button3... button10 Ahora creo un array de botón en la java class y hacerlo así

 public class Menu extends Activity { Button[] arrayButton=new Button[10]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menu); init(); } private void init() { for(int i=1 ; i<9 ; i++) { String abc = "but"+String.valueof(i); int x = Integer.parseInt(abc); Log.d("abc", abc); Log.d("x", String.valueOf(x) ); //arrayButton[i] = (Button) findViewById(R.id.x); // giving error //arrayButton[i].setText("Hello:"); } } } 

Quiero saber cómo puedo hacer este tipo de trabajo. Conseguir que todo el botón que usa para el lazo haga mi trabajo más rápido y algún tiempo cuando deseo fijar el texto de todos los botones.

getResources().getIdentifier como

 String abc = "but"+String.valueof(i); int resID = getResources().getIdentifier(abc, "id", getPackageName()); arrayButton[i] = (Button) findViewById(resID ); arrayButton[i].setText("Hello:"); 

Simplemente reescribir el método init() como

 private void init() { for(int i=1 ; i<9 ; i++) { String abc = "but"+String.valueof(i); int resID = getResources().getIdentifier(abc, "id", getPackageName()); arrayButton[i] = (Button) findViewById(resID); arrayButton[i].setText("Hello:"); } } 

O simple puede usar

  int[] buttonIDs = new int[] {R.id.but1, R.id.but2, R.id.but3,R.id.but4, ... } for(int i=0; i<buttonIDs.length; i++) { Button b = (Button) findViewById(buttonIDs[i]); b.setText("Hello:" + b.getText().toString()); } 

Si ya conoce todos los ids, simplemente puede utilizar:

 int [] ids = new int [] {R.id.btn1, R.id.btn2, ...}; Button [] arrayButton = new Button[ids.length]; for(int i=0 ; i < arrayButton.length ; i++) { arrayButton[i] = (Button) findViewById(ids[i]); } 

O si no los conoce, utilice:

 getResources().getIdentifier("btn1","id",getPackageName()) 

Pruebe de esta manera, espero que esto le ayudará a resolver su problema.

Main.xm

  <LinearLayout android:id="@+id/lnrMain" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button7" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button8" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button9" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button10" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </LinearLayout> 

MainActvity.java

 public class MainActivity extends Activity { private LinearLayout lnrMain; private Button[] arrayButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lnrMain = (LinearLayout) findViewById(R.id.lnrMain); arrayButton=new Button[10]; init(); } private void init() { for(int i=0;i<lnrMain.getChildCount() ; i++) { arrayButton[i] = (Button) lnrMain.getChildAt(i); arrayButton[i].setText("Hello:"+(i+1)); } } } 
 Try this , this example is for textview your can customize it according to your requirement public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); rr = new RelativeLayout(this); b1 = new Button(this); b1.setId(R.id.Button01); recent = b1; b1.setText("Click me"); rr.addView(b1); setContentView(rr); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv1 = new TextView(can.this); tv1.setId((int)System.currentTimeMillis()); lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); lp.addRule(RelativeLayout.BELOW, recent.getId()); tv1.setText("Time: "+System.currentTimeMillis()); rr.addView(tv1, lp); recent = tv1; } }); } 
  • ¿Cómo crear Clone-Duplicate View?
  • Cómo obtener la vista en la lista de vista ampliable en mi caso no muestran la lista ampliable que muestra en blanco
  • Cómo aplicar un filtro de color a una vista con todos los niños
  • Ajustar dinámicamente la altura de los encabezados de grupo en un ExpandableListView
  • OnTouchListener para toda la pantalla
  • Llamar setHasOptionsMenu (true) de un fragmento da como resultado múltiples llamadas a onCreateOptionsMenu en Activity
  • Vista de Android WebView
  • Contraer un grupo de forma programática en ExpandableListView
  • Android: Obtener una vista Referencia a un elemento de menú
  • addView no funciona
  • Cómo agregar cuadros a la imagen?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.