我创建了一个带有开关和编辑文本字段的表。我想发生的是设置开关启用当我在编辑文本字段中输入某个文本是在同一tablerow所以我如何设置开关在说行8启用如果我在编辑文本行8中输入文本.
for (int i = 0; i< dbarray_id.size(); i++ )
{
CODE IS HERE TO CREATE A TABLEROW
//Now add a switch to the row
Switch switch1 = new Switch(getActivity());
switch1.setId(i);
switch1.setTag(i);
switch1.setSwitchMinWidth(50);
switch1.setEnabled(false)
//Add a edittext field to the row
final EditText txtaccesscode = new EditText(getActivity());
txtaccesscode.setId(i);
txtaccesscode.setTag(i);
txtaccesscode.setHint("CODE?");
txtaccesscode.setInputType(TYPE_TEXT_FLAG_NO_SUGGESTIONS);
txtaccesscode.addTextChangedListener(new TextWatcher()
{
@Override
public void beforeTextChanged(
....etc... for after change ...
repeat for the number of rows in the database.
因此,当我在任何行中输入文本时,相应的开关将启用。
谢谢
2条答案
按热度按时间gcxthw6b1#
在类中封装EditText和Swath引用,那么当textWatcher触发两个引用时,都是预期的。
然后在循环中执行以下操作:
如果你有太多的行,也许这是不足够的,有其他的方法来做到这一点,让我知道,如果是这样的话。
njthzxwz2#
开关必须是final或字段。
然后你可以在beforeTextChanged监听器上访问它,在那里你可以像往常一样改变。
循环结束后,你不能再访问变量,但它仍然存在。在循环的下一次迭代中,您创建的开关即使具有相同的名称,也是一个不同的开关,因为它是一个新的作用域。