2011-10-26 14 views
5

Estoy intentando crear botones programáticamente en mi aplicación de Android dependiendo de cuántos elementos tengo en mi base de datos sqlite. Los botones están ahí, pero mi problema es establecer onClick en cada botón porque quiero mostrar contenido diferente cuando el usuario hace clic en los botones. Estoy usando este código por ahora:Botón de creación de Android programmatically issue

for(cursorCol.move(0); cursorCol.moveToNext(); cursorCol.isAfterLast()){ 
      Id = Integer.parseInt(cursorCol.getString(cursorCol.getColumnIndex("id"))); 
      Log.i("Id","Id : "+Id); 
       titleButton = cursorCol.getString(cursorCol.getColumnIndex("title")); 
      Log.i("titleButton","titleButton : " + titleButton); 
      elemOrder1 = Integer.parseInt(cursorCol.getString(cursorCol.getColumnIndex("elemOrder"))); 
       Log.i("elemOrder1 ","elemOrder1 : " + elemOrder1);  

       btn = new Button(this); 
        btn.setText(" " + titleButton + " "); 
        btn.setId(Id); 
        btn.setTextColor(Color.parseColor("#000000")); 
        btn.setTextSize(12); 
        btn.setPadding(10, 10, 10, 10); 
        btn.setBackgroundResource(R.drawable.gray_button); 
        btnlayout.addView(btn,params); 

        btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      infoCard.removeAllViews(); 

      for(int i=0;i<=cursorCol.getCount();i++){ 

      Log.i("","titleButton : "+titleButton); 

       } 
      } 
} 

pero el problema es que cuando hago clic en el botón que está mostrando sólo el último titleButton. En realidad, no necesito mostrar titleButton, solo lo hice con fines de prueba. ¿Alguna idea de cómo puedo crear diferentes métodos onClick para cada botón?

Respuesta

6

creo que el problema radica en esta línea de código:

btn = new Button(this); 

Estás editando el mismo botón una y otra vez en su bucle y no crear acutally una nueva. Para crear uno nuevo que tendrá que hacer esto:

Button new_btn = new Button(this); 

Esto creará uno nuevo cada vez que iterar a través de su bucle.

+1

¡Esa es la respuesta correcta! ¡Muchas gracias por esto! No me di cuenta de que estoy trabajando con el mismo botón cada vez. –

+0

No hay problema. Estoy feliz de ayudar – NotACleverMan

+1

Él crea una nueva instancia con "nuevo", por lo que no hay problema. –