我有一个应用程序,它动态创建一行 3 个编辑文本并将它们放在一个列表中,以便我可以“玩”它们的值。例如,如果我想在第一行调用价格,我只是做 pret[0]。简而言之,它是一种包含产品名称、数量和价格字段的购物清单。我已经设置它来检测文本何时被更改(文本观察器),以便它实时计算总数,所以我知道人们什么时候在编辑文本上写,但我不知道他们什么时候在最后输入编辑文本行。
我现在想要的是:当最后一行被单击/聚焦/在其中输入文本以调用 produsnou() 并自动创建一个新的 Edittext 行。正如我所说,我的问题是我不知道如何检测他们何时键入、单击或关注最后一行。这是我创建新的编辑文本行的方式。
public void produsnou() {
LinearLayout l1 = (LinearLayout) findViewById(R.id.layout1);
EditText et = new EditText(this);
et.setHint("Produs");
l1.addView(et);
et.addTextChangedListener(this);
et.setId(997);
LinearLayout l2 = (LinearLayout) findViewById(R.id.layout2);
EditText et2 = new EditText(this);
et2.setHint("Cantitate");
et2.setInputType(InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_DECIMAL);
et2.setId(998);
allcant.add(et2);
l2.addView(et2);
et2.addTextChangedListener(this);
LinearLayout l3 = (LinearLayout) findViewById(R.id.layout3);
EditText et3 = new EditText(this);
et3.setHint("Pret");
et3.setInputType(InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_DECIMAL);
l3.addView(et3);
et3.setId(999);
allpret.add(et3);
et3.addTextChangedListener(this);
}
我这样做了,但它不起作用:
public void onFocusChange(View view, boolean hasFocus) {
LinearLayout l3 = (LinearLayout) findViewById(R.id.layout3);
if (hasFocus &&
l3.getChildAt(l3.getChildCount() ) == view) {
produsnou();
}
}