我怎么知道在android中点击了哪个动态切换按钮

时间:2015-11-06 19:40:47

标签: android dynamic android-edittext android-togglebutton

我在android中动态创建了10个editText和10个Toggle Button。 我已经完成了这一部分,但我想要更多的进步。代码片段如下:

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

您可以在创建的视图中添加tag,并使用它来识别您的按钮。

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

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

您可以稍后使用

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