我如何知道在 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
变量。
我想实现两件事:
- 在同一行显示同一索引的编辑文本和切换按钮。
- 代替
//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
可能是垂直方向,这意味着添加到布局中的项目将一个接一个地出现。要将 EditText
和 ToggleButton
放在同一行,您必须将它们放在另一个布局中 - 您可以使用另一个水平方向的 LinearLayout
。然后,不是将 EditText
和 ToggleButton
直接添加到 ll
,而是将它们添加到这个新布局,然后将这个新布局添加到 ll
。
LinearLayout line = new LinearLayout(context);
line.setOrientation(LinearLayout.HORIZONTAL);
line.addView(et);
line.addView(tb);
ll.addView(line);
您可能还想设置布局参数和其他内容以进行一些对齐。
我正在 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
变量。
我想实现两件事:
- 在同一行显示同一索引的编辑文本和切换按钮。
- 代替
//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
可能是垂直方向,这意味着添加到布局中的项目将一个接一个地出现。要将 EditText
和 ToggleButton
放在同一行,您必须将它们放在另一个布局中 - 您可以使用另一个水平方向的 LinearLayout
。然后,不是将 EditText
和 ToggleButton
直接添加到 ll
,而是将它们添加到这个新布局,然后将这个新布局添加到 ll
。
LinearLayout line = new LinearLayout(context);
line.setOrientation(LinearLayout.HORIZONTAL);
line.addView(et);
line.addView(tb);
ll.addView(line);
您可能还想设置布局参数和其他内容以进行一些对齐。