La création de Imagebutton par programmation

Je veux créer plusieurs ImageButtons par programmation. Je suis en mesure de créer, mais l'écouteur d'événement clic continue de recevoir le même point de vue (Bouton 2), si je clique sur le bouton 0 ,button1 ou le bouton 2.

    RelativeLayout gameBoard = (RelativeLayout) findViewById(R.id.RelGameboard);

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    lp.addRule(RelativeLayout.CENTER_IN_PARENT,1);

    for(int i = 0 ; i <  3 ; i++)
    {

        ImageButton btnGreen = new ImageButton(this);
        btnGreen.setImageResource(R.drawable.bola_verde);
        btnGreen.setLayoutParams(lp);
        btnGreen.setOnClickListener(mGreenBallOnClickListener);
        btnGreen.setBackgroundColor(Color.TRANSPARENT); 
        btnGreen.setTag(i);
        btnGreen.setId(i);

                    gameBoard.addView(btnGreen);


     }'

Cliquez sur l'écouteur d'événement:

private View.OnClickListener mGreenBallOnClickListener = new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        //check which green ball was clicked
        ImageButton imgBtn = (ImageButton) v;

    Log.i("greeny","Clicked on green ball->"+imgBtn.getTag()+" v.ID->"+v.getId());
    }
};

Pour tout imagebutton établi, lorsque je clique sur je obtenir : clique sur le vert de la balle->2 v. ID->2

Les boutons sont dans des positions différentes ( j'ai mis un autre rembourrage pour chacun d'eux, mais dans le but de simplifier le code, je n'ai pas mis ici )

OriginalL'auteur TranT | 2013-05-07