Dynamisch ImageButtons erstellen und hinzufügen zum layout mit OnClickListeners

Ich versuche, dynamisch und programmgesteuert erstellen ImageButtons und fügen Sie Sie zu meiner Scrollen LinearLayout. Ich habe in der Lage gewesen, um Sie hinzuzufügen, aber wenn ich versuche, um onClickListeners Ihnen, alle Ihre anzeigen-ID, s -1; daher nicht in der Lage, um herauszufinden, auf welche Schaltfläche geklickt wurde.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        OnClickListener imageClickListener;
        imageClickListener = new OnClickListener(){

            @Override
            public void onClick(View v) {
                System.out.println("id clicked: " + v.getId());             
            }
        };


        for (int i = 0; i<images.length; i++)
        {
            LinearLayout il = new LinearLayout(this);
            il.setOrientation(LinearLayout.HORIZONTAL);
            il.setMinimumHeight(LayoutParams.WRAP_CONTENT);
            il.setMinimumWidth(LayoutParams.WRAP_CONTENT);

            int imageid = 0;
            ImageButton ib;
            BitmapDrawable imagebd;
            imageid = getResources().getIdentifier("drawable/" + images[i], null, getPackageName());
            imagebd = resizeImage(imageid);
            ib = new ImageButton(this);


            ib.setClickable(true);
            ib.setOnClickListener(imageClickListener);
            ib.setImageDrawable(imagebd);
            ib.setMinimumHeight(size);
            ib.setMinimumWidth(size);       
            ib.setMaxHeight(size);
            ib.setMaxWidth(size);
            imageButtons.add(ib);
            il.addView(ib);
            System.out.println("id: " + ib.getId());

            ll.addView(il);
        }
        this.setContentView(sv);

    }
  • Warum nicht rufen Sie ib.setId(i) ? Wenn Sie möchten, eine id zu können, definieren Sie beim erstellen der image-Taste!
  • Danke! Wusste nicht, Sie könnten sich Ihre eigene id.. Wenn du in deinem Kommentar die richtige Antwort werde ich akzeptieren Sie für Sie.
  • lb.setId(i);
InformationsquelleAutor Neeta | 2012-02-28
Schreibe einen Kommentar