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í
- Problema para agregar vista dinámicamente en Linearlayout
- Cambios en una página web a través de JavaScript que no aparecen en WebView. ¿Hay una manera de forzar el WebView para volver a dibujar su contenido?
- ¿Por qué mi tamaño de fuente parece mucho más grande en el objeto de vista web android que cuando se ve en el navegador de Android?
- ¿Cómo obtener el lienzo actual?
- Vista web de Android en la mitad de la pantalla
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.
- Android spinner cerrar
- La superficie de la cámara Android se cambió constantemente
- Android: icono del indicador de cambio y tamaño de la lista expandible utilizada para la navegación
- ExpandableListView con arrastrar y soltar de elementos de la lista en Android
- ExpandableListView onExpand siempre desplaza el grupo expandido hacia arriba
- Android toggleButton.setOnText y .invalidate no actualiza el texto
- Google ya no permite el uso de WebView. ¿Cuáles son las alternativas?
- El fondo de vista de Android cambia inesperadamente
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; } }); }
- Servicio remoto, pérdidas de actividad al girar
- ¿Cómo empujar submodule a github usando android studio?