2011-02-17 4 views
1

Eh bien, j'ai 16 boutons. Je veux trouver un moyen plus facile de les ajouter à un écouteur onTouch, je suis nouveau sur Android/java donc je ne suis pas sûr de ce qui fonctionnerait. Voici mon code pour ça maintenant.Android onTouchListener, moyen plus facile à mettre en œuvre

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main) 

.

Button btn_main1 = (Button) findViewById(R.id.cmd_main1); 
    Button btn_main2 = (Button) findViewById(R.id.cmd_main2); 
    Button btn_main3 = (Button) findViewById(R.id.cmd_main3); 
    Button btn_main4 = (Button) findViewById(R.id.cmd_main4); 
    Button btn_main5 = (Button) findViewById(R.id.cmd_main5); 
    Button btn_main6 = (Button) findViewById(R.id.cmd_main6); 
    Button btn_main7 = (Button) findViewById(R.id.cmd_main7); 
    Button btn_main8 = (Button) findViewById(R.id.cmd_main8); 
    Button btn_main9 = (Button) findViewById(R.id.cmd_main9); 
    Button btn_main10 = (Button) findViewById(R.id.cmd_main10); 
    Button btn_main11 = (Button) findViewById(R.id.cmd_main11); 
    Button btn_main12 = (Button) findViewById(R.id.cmd_main12); 
    Button btn_main13 = (Button) findViewById(R.id.cmd_main13); 
    Button btn_main14 = (Button) findViewById(R.id.cmd_main14); 
    Button btn_main15 = (Button) findViewById(R.id.cmd_main15); 
    Button btn_main16 = (Button) findViewById(R.id.cmd_main16); 


    btn_main1.setOnTouchListener(tListener1); 
    btn_main2.setOnTouchListener(tListener1); 
    btn_main3.setOnTouchListener(tListener1); 
    btn_main4.setOnTouchListener(tListener1); 
    btn_main5.setOnTouchListener(tListener1); 
    btn_main6.setOnTouchListener(tListener1); 
    btn_main7.setOnTouchListener(tListener1); 
    btn_main8.setOnTouchListener(tListener1); 
    btn_main9.setOnTouchListener(tListener1); 
    btn_main10.setOnTouchListener(tListener1); 
    btn_main11.setOnTouchListener(tListener1); 
    btn_main12.setOnTouchListener(tListener1); 
    btn_main13.setOnTouchListener(tListener1); 
    btn_main14.setOnTouchListener(tListener1); 
    btn_main15.setOnTouchListener(tListener1); 
    btn_main16.setOnTouchListener(tListener1); 
} 

De toute évidence, c'est une façon terrible de le faire. Je suis sûr qu'il existe un moyen de faire une sorte de boucle, ou de mettre les boutons dans un tableau ou quelque chose. Toute aide pour raccourcir ceci est grandement appréciée!

+0

savez-vous toujours au moment de la compilation combien de boutons il y a? Si c'est le cas, je pense avoir une solution élégante pour réduire la verbosité. – Mascarpone

Répondre

1

Une autre façon pourrait être d'ajouter les boutons en utilisant du code au lieu de XML.

Cependant, juste pour nettoyer ce code ...

int[] buttonIds = new int[]{R.id.cmd_main1, R.id.cmd_main2}; // and so on 

for(int buttonId : buttonIds) { 
    Button b = (Button)findViewById(buttonId); 
    b.setOnTouchListener(tListener1); 
} 

En outre, un onClickListener est probablement plus propre, en fonction de ce que vous voulez que les boutons à faire. Vous pouvez ensuite spécifier le onClickListener en XML:

<Button android:onClick="myClickHandler" /> 

et dans l'activité, ajoutez la méthode correspondante:

class MyActivity extends Activity { 
public void myClickHandler(View target) { 
    // Do stuff 
    } 
} 
+0

Serait-il plus propre de créer les boutons avec le code? – Henzl0l

+0

@ Henzl0l Je pense que cela dépend de ce que vous faites. Le fait que leurs noms soient simplement indexés par des chiffres peut indiquer cela. En outre, un onClickListener pourrait être préférable - publiera une autre réponse pour mettre en évidence le code. – Arve

+0

J'utilise au toucher pour une raison, j'ai besoin des boutons pour réagir au moment où ils sont touchés. Je suis encore nouveau sur Android, donc je ne suis pas sûr s'il y a une meilleure méthode pour le faire. – Henzl0l

Questions connexes