如何在Android中动态添加多个ToggleButton并获取其setOnCheckedChangeListener

3

我成功地在activity中添加了多个动态togglebutton。但是我遇到了处理每个togglebuttonsetOnCheckedChangeListener的问题。

我创建了演示代码片段。

linearLayout = (LinearLayout) findViewById(R.id.linearLayout);

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

            el = new LinearLayout(this);
            el.setOrientation(LinearLayout.HORIZONTAL);

            LinearLayout.LayoutParams emailLinearParams = new LinearLayout.LayoutParams(
                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

            el.setLayoutParams(emailLinearParams);
            el.setPadding(5, 5, 5, 5);

            LinearLayout.LayoutParams emailTxtParams = new LinearLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT, 0.9f);

            TextView emailTxt = new TextView(this);
            emailTxt.setText("demo");
            emailTxt.setLayoutParams(emailTxtParams);
            emailTxt.setGravity(Gravity.CENTER_VERTICAL);

            el.addView(emailTxt);

            ToggleButton toggleEmailBtn = new ToggleButton(this);

            LinearLayout.LayoutParams emailToggleBtnParams = new LinearLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f);

            toggleEmailBtn.setLayoutParams(emailToggleBtnParams);

            el.addView(toggleEmailBtn);

            linearLayout.addView(el);

        }

请发布您的代码,因为仅根据问题描述很难提出建议。 - Egor
1个回答

0

尝试并解决了,得到了好的答案 :)

ToggleButton tglBtn[];

onCreate()

tglBtn = new ToggleButton[6];

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

            el = new LinearLayout(this);
            el.setOrientation(LinearLayout.HORIZONTAL);

            LinearLayout.LayoutParams emailLinearParams = new LinearLayout.LayoutParams(
                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

            el.setLayoutParams(emailLinearParams);
            el.setPadding(5, 5, 5, 5);

            LinearLayout.LayoutParams emailTxtParams = new LinearLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT, 0.9f);

            TextView emailTxt = new TextView(this);
            emailTxt.setText("demo");
            emailTxt.setLayoutParams(emailTxtParams);
            emailTxt.setGravity(Gravity.CENTER_VERTICAL);

            el.addView(emailTxt);

            tglBtn[i] = new ToggleButton(this);

            LinearLayout.LayoutParams emailToggleBtnParams = new LinearLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f);

            tglBtn[i].setLayoutParams(emailToggleBtnParams);

            el.addView(tglBtn[i]);

            linearLayout.addView(el);

            tglBtn[i]
                    .setOnCheckedChangeListener(handleOnClick(
                            tglBtn[i], i));

        }

使用方法来处理 togglebuttons 上的 onclick

CompoundButton.OnCheckedChangeListener handleOnClick(
            final ToggleButton button, final int id) {
        return new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton cbtn, boolean isCheck) {
                    Log.d(TAG, "clicked "+id);
            }
        };
    }

如果您解决了问题,请在此处发布您的解决方案,以供遇到相同问题的用户参考。 - Emil Adz
2
添加了我的答案,希望这能帮助其他遇到同样问题的人。 - Amol Sawant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接