我如何知道在 android 中单击了哪个动态切换按钮

How do I know which dynamic Toggle Button was clicked in android

我正在 android 中动态创建 10 个 editText 和 10 个切换按钮。 我已经完成了这部分,但我希望它有更多的进步。片段如下:

for(int i =0 ; i < 10; i++) {
     et=new EditText(context);
     et.setLayoutParams(lprams); 
     et.setKeyListener(null);
     et.setClickable(true);
     et.setId(1); 
     et.setText(lwfb.get(i));
     et.setFocusableInTouchMode(true);
     final ToggleButton tb = new ToggleButton(context);
     tb.setTextOn("ON");
     tb.setTextOff("OFF");
     tb.setChecked(true);
     tb.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

     ll.addView(et);
     ll.addView(tb);

     tb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             if(tb.isChecked()){
                 //Button is ON
             } else {
                 //Button is OFF
             }    
        }
    });
}

其中 ll 是动态 LinearLayout 变量。

我想实现两件事:

  1. 在同一行显示同一索引的编辑文本和切换按钮。
  2. 代替//Button is ON/OFF我想显示button [i] is ON/OFF

您可以将 tag 添加到您创建的视图并使用它来标识您的按钮。

private static final int TAG_KEY_POS = R.id.someid;

...
tb.setTag(TAG_KEY_POS, i);
...

您稍后可以使用

检索该值
(Integer) view.getTag(TAG_KEY_POS);

ll 可能是垂直方向,这意味着添加到布局中的项目将一个接一个地出现。要将 EditTextToggleButton 放在同一行,您必须将它们放在另一个布局中 - 您可以使用另一个水平方向的 LinearLayout。然后,不是将 EditTextToggleButton 直接添加到 ll,而是将它们添加到这个新布局,然后将这个新布局添加到 ll

LinearLayout line = new LinearLayout(context);
line.setOrientation(LinearLayout.HORIZONTAL);
line.addView(et);
line.addView(tb);
ll.addView(line);

您可能还想设置布局参数和其他内容以进行一些对齐。