2012-04-26 5 views
0

Je souhaite que l'utilisateur ajoute des boutons Pour que chaque ligne ne comporte que quatre boutons. j'ai donc écrit la fonction suivante:Comment ajouter des boutons dynamiquement

private void addContact() { 
     //numButton Count how many buttons there are in line 
     if(numButton==0){ 
      LinearLayout linearLayout =new LinearLayout(this); 
      linearLayout.setOrientation(0);//horizontal 
      ImageButton imageButton =new ImageButton(this); 
      imageButton.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.button1)); 
      linearLayout.addView(imageButton); 
      LinearLayout linearbase= (LinearLayout)findViewById(R.id.linearBase); 
      linearbase.addView(linearLayout); 
      numButton++; 
     } 
     else if(numButton<4) 
     { 
      LinearLayout linearlayout= ----####Here I do not know what to write!!!!### 
      ImageButton imageButton =new ImageButton(this); 
      imageButton.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.button1)); 
      linearlayout.addView(imageButton); 
      numButton++; 
     } 
     else 
     { 
      numButton=0; 
     } 
    } 

Je marqué les lignes de code mon problème Plus précisément mon problème est comment mettre le nouveau bouton dans la LinearLayout que défini dans l'appel précédent à cette fonction? Deuxième question: comment garder la nouvelle situation même lorsque vous fermez l'application? Lorsque vous créez LinearLayout pour la première fois, donnez-lui un identifiant.

+0

Cela pourrait aider: [créer Dynamiquement Boutons et réglage onClickListener] (http://stackoverflow.com/questions/4401028/dynamically -creating-buttons-and-setting-onclicklistener) Je l'ai trouvé dans la colonne ** Related ** (là-bas ->). Quant à garder les données après la fermeture de l'application, c'est une bonne référence. [Stockage de données] (http://developer.android.com/guide/topics/data/data-storage.html) – Sam

Répondre

0

Ensuite, vous pouvez l'obtenir la deuxième fois avec findViewById(). Pour répondre à votre deuxième question, stockez un booléen dans SharedPreferences.

0

Déclarez votre LinearLayouts en dehors de votre méthode addContact, sinon ils n'existent que dans cette méthode. Je pense que quelque chose comme ça devrait fonctionner (je ne l'ai pas testé):

class myclass{ 

    private LinearLayout linearLayout; 
    private LinearLayout linearbase; 
    private int numButton; 

    @Override 
    public void onFinishInflate() { 
     super.onFinishInflate(); 

     linearbase= (LinearLayout)findViewById(R.id.linearBase); 
     LinearLayout linearLayout =new LinearLayout(this); 
     linearLayout.setOrientation(0);//horizontal 

     numButton=0; 
    } 

    private void addContact() { 
     //numButton Count how many buttons there are in line 
     if(numButton==0){ 

      ImageButton imageButton =new ImageButton(this); 
      imageButton.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.button1)); 
      linearLayout.addView(imageButton); 
      linearbase.addView(linearLayout); 
      numButton++; 
     } 
     else if(numButton<4) 
     { 
      linearLayout= new LinearLayout(this); 
      ImageButton imageButton =new ImageButton(this); 
      imageButton.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.button1)); 
      linearlayout.addView(imageButton); 
      numButton++; 
     } 
     else 
     { 
      numButton=0; 
     } 
    } 
} 
+0

je vous remercie ça aide mon / –

Questions connexes